查找表中含有ASCII大于127的字符的记录

CodeProject-Jerry 2011-04-06 09:14:55
表A, 有字段a,
能不能用最简便的方法筛选出所有含有 ASCII码大于127的字符 的记录?

PATINDEX ??

T-SQL好像不支持 正则表达式哦
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeProject-Jerry 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qgqch2008 的回复:]

sql2005支持正则的,俺不会……
[/Quote]

T-SQL没有 实现对 REGEXP的支持吧, 我看了好多都是调用JS 或者 CLR实现的

服务器上不允许
qgqch2008 2011-04-07
  • 打赏
  • 举报
回复
sql2005支持正则的,俺不会……
qgqch2008 2011-04-07
  • 打赏
  • 举报
回复
CREATE TABLE tb (id INT IDENTITY(1,1) PRIMARY KEY, a VARCHAR(20))
INSERT INTO tb(a)
SELECT 'dha€1' UNION ALL SELECT 'ggf' UNION ALL SELECT 'f€€dhj'

DECLARE @i INT
SET @i = 1
DECLARE @j INT
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * FROM dbo.tb WHERE id IN(SELECT id FROM ( SELECT xid,id,a FROM ( select id, '
SELECT @j = MAX(LEN(a))
FROM tb
WHILE @i <= @j
BEGIN
SET @sql = @sql + 'ASCII(substring(a,' + CONVERT(VARCHAR(2), @i)
+ ',1)) as [' + CONVERT(VARCHAR(2), @i) + '],'
SET @i = @i + 1
END
SET @sql = LEFT(@sql, LEN(@sql) - 1) + ' from tb )p UNPIVOT (a FOR xid IN ('
SET @i = 1
WHILE @i <= @j
BEGIN
SET @sql = @sql + '[' + CONVERT(VARCHAR(2), @i) + '],'
SET @i = @i + 1
END
SET @sql = LEFT(@sql, LEN(@sql) - 1) + ')) AS pvt) b WHERE b.a>127) '
--PRINT @sql
EXEC (@sql)

DROP TABLE dbo.tb
id a
----------- --------------------
1 dha€1
3 f€€dhj

(2 行受影响)
是这样不……
--小F-- 2011-04-06
  • 打赏
  • 举报
回复
select * from tb where ASCII(a)>127

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧