这是我的询问:
SELECT
*,
LEN(Test) LENofTEST,
DATALENGTH(Test) DataLENofTEST,
CAST(Test AS VARBINARY(30)) ExtraColumn
FROM
(SELECT
TRIM(SOS1 + ',' + REPLACE(PANO20, ' ', '')) AS 'Test',
COUNT(SOS1 + ',' + REPLACE(PANO20, ' ', '')) AS 'COUNTR'
FROM
MyServerName.dbo.MyTableName
WHERE
PANO20 LIKE '%701001207%'
GROUP BY
TRIM(SOS1 + ',' + REPLACE(DUMP(PANO20), ' ', ''))) A
这些是我的结果:
Test COUNTR LENofTEST DataLENofTEST ExtraColumn
-----------------------------------------------------------------
100,701001207 1 13 13 0x3130302C373031303031323037
100,701001207 1 14 14 0x3130302C373031303031323037A0
123,701001207 1 13 13 0x3132332C373031303031323037
我的问题是前两行。它们的长度应该相同,因此
COUNTR
应为 2。
但由于某种原因,SQL 将它们称为不同长度的不同值。
如何调整我的查询,以便将它们计为相同的“测试”?显然我想系统地、可重复地做到这一点。
提前谢谢您!
而不是做
TRIM(Foo)
(仅修剪掉常规空格)
你可以做
TRIM(NCHAR(0x0020) /*SP*/ + NCHAR(0x00A0) /*NBSP*/ + NCHAR(0x200B) /*ZWSP*/ FROM Foo)
修剪更多种类的空间。
请参阅 空白字符 维基百科文章,了解您可能想要添加的其他可能性。