小问题,怎样查姓名列中有非汉字字符的记录

QQ454831 2005-08-08 12:10:10
姓名列中由于生成记录时检查不足现想剔除一些怪字符名字,
如包含首空格,数字,标点符号等

本以为很简单

select * from table1 where name <啊

结果根本不行
...全文
172 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
huangyj 2006-03-17
确实强!
回复
rubik78 2005-08-31
还是这个快得多:

select *
from table1
where PATINDEX('%[^吖-做]%',username) > 0
回复
rubik78 2005-08-31
between '吖' and '做'
回复
rubik78 2005-08-31
上面的方法不能判断日文或全角标点或繁体汉字,下面这个可以

between '阿' and '座'
回复
tangqijun199 2005-08-10
那确实.
试试不就知道了
回复
prcgolf 2005-08-10
up
回复
QQ454831 2005-08-09
日文假名和汉字一样吧,也是len为一,datalength为二
回复
tangqijun199 2005-08-08
有非汉字的字符的
select * from table1
where datalength(username)%(2*len(username))<>0
要是有汉字字符的还是没有办法。

回复
tangqijun199 2005-08-08

select * from table1
where datalength(username)%len(username)<>0
回复
QQ454831 2005-08-08
有何好方法
回复
QQ454831 2005-08-08
想了一下,其实可以这样问,怎样查询姓名列全为汉字的记录?


select * from table1
where datalength(username)<>len(username)*2

好像可以实现,待大家
回复
tangqijun199 2005-08-08
去空格可以用LTRIM()和RTRIM()
判断是否有特殊字符可以用charindex()
入charindex('a','bcd')如果第一个参数在第2个里面返回值就大于0。
回复
QQ454831 2005-08-08
错了一个字
select * from table1 where name < '阿'
可以得到不少记录,不过仅限首字符
回复
summerICEREDTEA 2005-08-08
学习 :)
回复
tangqijun199 2005-08-08
の也是1位用我上面的办法应该可以啊。
回复
QQ454831 2005-08-08
发现日文假名 の,确实不行啊
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2005-08-08 12:10
社区公告
暂无公告