Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Server filtert CJK-Interpunktionszeichen

Sie können ein Unicode-Zeichen mit NCHAR() erstellen Funktion:

SELECT NCHAR(0x3000); -- http://unicode-table.com/en/3000/

Sie können das auch in einem WHERE verwenden -Klausel wie folgt, einschließlich der Verwendung mit REPLACE() Funktion, um sie loszuwerden. Sie müssen nur eine binäre Sortierung angeben (eine, die auf _BIN2 endet ), um sicherzustellen, dass Sie kein anderes Zeichen ersetzen, das in ein Leerzeichen übersetzt wird (obwohl ich nicht sicher bin, ob der Nettoeffekt davon anders wäre, wenn keine binäre Sortierung verwendet wird, zumindest in diesem Szenario).

SELECT * 
FROM   [Table]
WHERE  [Column] LIKE N'%' + NCHAR(0x3000) + N'%' COLLATE Latin1_General_100_BIN2;

UPDATE tbl
SET    tbl.Column = REPLACE(tbl.[Column] COLLATE Latin1_General_100_BIN2,
                            NCHAR(0x3000),
                            N' ')
FROM   [Table] tbl
WHERE  [Column] LIKE N'%' + NCHAR(0x3000) + N'%' COLLATE Latin1_General_100_BIN2;