从 nvarchar 列查找并显示特殊字符代码

Flo*_*Flo 1 sql-server string-manipulation sql-server-2019

我想知道我的 type 列中有哪些特殊字符(换行符、制表符等)nvarchar。我知道如何选择哪些行包含特定字符

例如SELECT * FROM your_table WHERE your_column LIKE '%' + CHAR(10) + '%'

但是,我想知道哪些列包含不在其中的字符[a-zA-Z0-9],然后知道哪些列包含其中的字符。我还查看了是否可以在列上进行选择以显示显示所有字符的原始文本(例如类似于 Microsoft Word 的显示所有字符),但我也找不到如何执行此操作。

Pau*_*ite 6

如果您可以接受一对一的角色替换,请使用TRANSLATE功能。

\n

例如:

\n
DECLARE @T table (c1 nvarchar(50) NULL);\n\nINSERT @T (c1) VALUES \n(N\'Hello\' + NCHAR(9) + N\'there\' + NCHAR(10) + NCHAR(13));\n\nSELECT\n    TRANSLATE(\n        T.c1, \n        -- tab, line feed, carriage return\n        CONCAT(NCHAR(9), NCHAR(10), NCHAR(13)), \n        -- corresponding replacement codes\n        CONCAT(NCHAR(9225), NCHAR(9226), NCHAR(9229)))\nFROM @T AS T;\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n\n\n\n\n\n\n\n\n\n\n
输出
你好\xe2\x90\x89那里\xe2\x90\x8a\xe2\x90\x8d
\n
\n

由您来选择替换字符。我使用了Unicode“控制图片”块中的标准内容

\n

否则,使用嵌套REPLACE调用将制表符替换为“{tab}”。

\n

处理nvarchar数据时,在文字前添加 N 前缀以生成 Unicode 非常重要。您还应该使用 Unicode 函数,例如NCHAR而不是CHAR.

\n