我有一个具有TEXT类型列的Server表,它将以不同的格式存储候选简历。RTF是最常见的,但我们经常从第三方转换器获得简历数据,它将简历存储为特殊字符(可能是Unicode或我不知道它们是什么)。

发布于 2022-01-14 00:43:02
假设“特殊”字符指的是一组可打印的ASCII和某些常见的空白字符之外的任何字符,您可以尝试如下:
DECLARE @SpecialPattern VARCHAR(100) =
'%[^'
+ CHAR(9) + CHAR(10) + CHAR(13) -- tab, CR, LF
+ CHAR(32) + '-' + CHAR(126) -- Range from space to last printable ASCII
+ ']%'
SELECT
RESUME_TEXT,
cast(left(cast(resume_text as varchar(max)),20) as varbinary(max))` -- Borrowed from userMT's comment
FROM RESUME
WHERE RESUME_TEXT LIKE @SpecialPattern COLLATE Latin1_General_Bin -- Use exact compare对于一些完全有效的扩展字符,例如重音元音、卷曲引号或文本中可能存在的m-和n-破折号,您可能会遇到一些错误。
我的第一个想法是,奇怪的字符可能是一个UTF-8 BOM (十六进制EF,BB,BF),但显示似乎与我期望SQL Server呈现它们的方式不匹配。逆点在默认的windows代码页(1252)中根本不存在。
我们至少需要一些十六进制数据(至少前几个字节)来帮助进一步。通常,常见的二进制文件类型在前3-5字节中有一个可识别的签名。
https://stackoverflow.com/questions/70691768
复制相似问题