2016-05-13 6 views
0

Ich habe einige Sonderzeichen in SQL Server 2005 auf einem der Felder, die japanische Daten hat. Aufgrund dessen schlägt die Cube-Verarbeitung mit Fehler "Attributschlüssel nicht gefunden" fehl.Suche nach einem Sonderzeichen in SQL Server 2005

Der vom Analysis Services-Server interpretierte Wert ist "野 田", aber der Wert in db ist 野 田.

[Beachten Sie den Raum nach dem Wert ‚野 田‘]

enter image description here

Am versuchen, für alle Zeilen zu suchen, die diese Sonderzeichen am Ende der Daten in last_name Spalte enthalten.

Dafür versuchte ich unten Abfrage, aber es gibt mir die falschen Ergebnisse nicht.

select * from [#temp1] 
where convert(nvarchar,last_name) like convert(nvarchar,'% ') 

enter image description here

Ich möchte die Zeilen, die Sonderzeichen enthält (‘‚) am Ende der Werte in last_name Feld.

Was fehlt mir?

+0

Kennen Sie den ASCII-Wert für die Sonderzeichen? Vielleicht ist das kein Platz, sondern etwas anderes. Ich würde 'ASCII' und' SUBSTRING' verwenden, um zu bestätigen, was das Zeichen ist und dann 'CHAR' verwenden, um nach genau diesem ASCII-Wert zu suchen. –

+0

Leider weiß ich nicht ASCII-Wert. Nicht sicher, wie ich es bekommen kann. Ja, es scheint kein Raum zu sein. –

+0

Deshalb verwenden Sie die 'ASCII'- und' SUBSTRING'-Funktionen, um das Zeichen zu erhalten. Du weißt schon, in welcher Zeile es ist. Ich werde ein bisschen lang nach Kommentaren, also poste ich das als Antwort unten. –

Antwort

0

können Sie versuchen, REVERSE und SUBSTRING mit

Wie diese

select * from [#temp1] 
where SUBSTRING(REVERSE(last_name),1,1)=' ' 
0

Es sieht aus wie Sie ein abschließendes Zeichen haben, die nicht wirklich ein Raum ist, aber die als eine in SSMS auftaucht (oder was auch immer Sie verwenden, um die Daten anzuzeigen). Sie müssen herausfinden, was eigentlich, dass Charakter ist, so würde ich so etwas wie dies versucht:

SELECT 
    last_name, 
    ASCII(SUBSTRING(last_name, LEN(last_name), 1)) 
FROM 
    #temp1 

Wenn Sie den ID-Wert oder eine andere Art und Weise wissen, dass Zeile fügen Sie dann in einer WHERE Klausel zu sehen.

Sobald das erledigt ist, sollten Sie alle Instanzen dieser Daten mit der Lage zu finden:

SELECT 
    * -- Get whatever columns you need 
FROM 
    #temp1 
WHERE 
    last_name LIKE '%' + CHAR(<value found above>)