首页 新闻 会员 周边 捐助

求SQL-公司名称不包含(中文、数字、括号、英文)之外的字符-sql server 库

0
悬赏园豆:100 [已解决问题] 解决于 2015-08-25 16:17

各位大神,求个SQL写WHERE 条件:公司名称(字段[CompanyName])不包含(中文、数字、括号、英文)之外的字符-sql server 库的语法,括号包含全角和半角,多谢!

C#开发人员的主页 C#开发人员 | 初学一级 | 园豆:181
提问于:2015-08-24 11:38
< >
分享
最佳答案
0

研究了半天,你看看吧!

IF OBJECT_ID('DBO.CompanyName') IS NOT NULL
DROP FUNCTION DBO.CompanyName
GO
CREATE FUNCTION DBO.CompanyName(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9a-zA-Z吖-座()()]%',@S) > 0
BEGIN
SET @S=STUFF(@s,PATINDEX('%[^0-9a-zA-Z吖-座()()]%',@s),1,'')
END
RETURN @S
END
GO
select * from [TABLE] where len(CompanyName) = len(DBO.CompanyName(CompanyName))

收获园豆:95
at小怪兽 | 小虾三级 |园豆:760 | 2015-08-24 15:52

非常感谢,刚才试了大多数结果都对,只是有几个包含“做”的没看有其他特殊字符也查出来了,不知是不是超出了“吖-座”范围。

C#开发人员 | 园豆:181 (初学一级) | 2015-08-25 13:51

@C#开发人员: 吖-座  改成  吖-咗 试试 

at小怪兽 | 园豆:760 (小虾三级) | 2015-08-25 14:02

@莫宇: 虽然还有些生僻字不认识,例如“䀸”,不过也差不多了。多谢!

C#开发人员 | 园豆:181 (初学一级) | 2015-08-25 16:19
其他回答(3)
0

这咱理论上应该用正则,sql里面不太好用,可以用用户自定义类型处理,用c#写dll.导入sql中

然后就可以用的sql调用   where foo([companyName])=1

收获园豆:5
gw2010 | 园豆:1487 (小虾三级) | 2015-08-24 15:24

请教,正则怎么写?

支持(0) 反对(0) C#开发人员 | 园豆:181 (初学一级) | 2015-08-24 15:43

@C#开发人员: http://blog.csdn.net/maco_wang/article/details/7439560

网上找了个

支持(0) 反对(0) gw2010 | 园豆:1487 (小虾三级) | 2015-08-24 17:05
0

研究下:REGEXP 吧,支持正则

大志若愚 | 园豆:2138 (老鸟四级) | 2015-08-24 18:00
0

来学习的,楼主请忽视

LovingNow | 园豆:132 (初学一级) | 2015-08-25 13:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册