我在我的sql数据库中发现了无法替换的奇怪的空白字符串,例如REPLACE(string,'','')RTRIM,甚至找不到string ='%%'。使用SELECT字符串INTO时,该空间甚至被转移到新表中 如果我在managment studio中选择此字符串并进行复制,这似乎是正常空间,并且一切正常但无法直接从数据库中执行任何操作。我还可以做些什么?是某种错误,还是我可以为此尝试一些特殊字符?
答案 0 :(得分:1)
首先,您必须识别字符。
您可以通过使用理货表格(或cte)和Unicode
函数来做到这一点:
以下脚本将返回一个包含两列的表:一个包含一个字符,另一个包含unicode值:
DECLARE @Str nvarchar(100) = N'This is a string containing 1 number and some words.';
with Tally(n) as
(
SELECT TOP(LEN(@str)) ROW_NUMBER() OVER(ORDER BY @@SPID)
FROM sys.objects a
--CROSS JOIN sys.objects b -- (unremark if there are not enough rows in the tally cte)
)
SELECT SUBSTRING(@str, n, 1) As TheChar,
UNICODE(SUBSTRING(@str, n, 1)) As TheCode
FROM Tally
WHERE n <= LEN(@str)
您还可以在where子句中添加条件,以仅包含“特殊”字符:
AND SUBSTRING(@str, n, 1) NOT LIKE '[a-zA-Z0-9]'
然后,您可以使用nchar
使用它的unicode值替换它(在此示例中,我使用了32,因为它是unicode“常规”空格:
SELECT REPLACE(@str, NCHAR(32), '|')
结果:
This|is|a|string|containing|1|number|and|some|words.