1

我们的数据库 (128-155) 出现扩展 ascii 代码的问题

无论如何搜索整个数据库并显示可能存在的任何这些字符的结果以及它们在表和列中的位置。

希望这是有道理的。

我有搜索整个数据库的脚本,但在打开行时遇到问题。

DECLARE @SearchStr nvarchar(100)

SET @SearchStr != between char(32) and char(127)

我最初有这个工作,但我需要扩展我正在寻找的范围。

SET @SearchStr = '|' + char(9) + '|' + char(10) + '|' + char(13)

谢谢

4

2 回答 2

2

目前还不清楚您的数据是什么样的,但这可能会帮助您入门:

declare @TestData table (String nvarchar(100))

insert into @TestData select N'abc'
insert into @TestData select N'def'
insert into @TestData select char(128)
insert into @TestData select char(155)

declare @SearchPattern nvarchar(max) = N'%['
declare @i int = 128
while @i <= 155
begin
    set @SearchPattern += char(@i)
    set @i += 1
end
set @SearchPattern += N']%'

select @SearchPattern

select String
from @TestData
where String like @SearchPattern

当然,您需要添加一些代码来遍历要查询的每个表和列(请参阅此问题),并且此代码可能在不同的排序规则上表现不同。

于 2013-05-03T18:42:10.247 回答
1

...其中 dodgyColumn 是您的列有可疑数据...。

WHERE(patindex('%[' + char(127) + '-' + char(255) + ']%', dodgyColumn COLLATE Latin1_General_BIN2) > 0)

这对我们有用,可以识别我们原本正常的 ASCII 数据(字符、数字、标点符号、美元和百分号等)中的扩展 ASCII 字符。

于 2016-11-01T22:04:42.733 回答