在sql中如何查字段内容为中文的数据?

mlsml 2009-07-30 08:30:22
数据库有十几万数据其中用户名中有2-3万的数据为中文,在sql中怎么才能查出包含中文的字段??
例如:name字段
aaa
张三
bbb
李四

查询结果:张三
李四
...全文
8464 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlsml 2009-07-31
  • 打赏
  • 举报
回复
not like'%[a-z]%'---------不是like了,张三aaaa,这样的就查不出来~~~~
soft_wsx 2009-07-31
  • 打赏
  • 举报
回复
select * from tb where patindex('%[吖-做]%',name)>0
htl258_Tony 2009-07-31
  • 打赏
  • 举报
回复
select count(*) from bbb where name not like'%[a-z]%' 这个只要有英文的,哪怕中文加英文都查不出


--这个可以查全英文或英文与其它字符的组合。
mlsml 2009-07-31
  • 打赏
  • 举报
回复
经测试显示:
select count(*) from bbb where name like '%[吖-做]%' 这个只要包含中文都能查出

select count(*) from bbb where name not like'%[a-z]%' 这个只要有英文的,哪怕中文加英文都查不出

总结:第一个准

谢谢大家

guguda2008 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mlsml 的回复:]
select count(*) from bbb where name  like '%[吖-做]%'  ------结果为1.5w

      ------------这个是name中只包含中文?如果有数字、英文都不行?

select count(*) from bbb where name not like'%[a-z]%'  ------结果为2.2w

      ------------这个是name中只能有英文,不能有数字和中文?
[/Quote]
就是只包含中文的,试试就知道了,看看11L的大大写的例子
htl258_Tony 2009-07-31
  • 打赏
  • 举报
回复
------------这个是name中只包含中文?如果有数字、英文都不行?

错,如果有中文和英文、数字,还是会统计出来的。

If not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([name] nvarchar(8))
Insert tb
Select 'aaa' union all
Select '张三11' union all
Select 'bbb' union all
Select '李四aa'
Go
--Select * from tb

-->SQL查询如下:
select * from tb where name like '%[吖-做]%'
/*
name
--------
张三11
李四aa

(2 行受影响)
*/
mlsml 2009-07-31
  • 打赏
  • 举报
回复

select count(*) from bbb where name like '%[吖-做]%' ------结果为1.5w

------------这个是name中只包含中文?如果有数字、英文都不行?

select count(*) from bbb where name not like'%[a-z]%' ------结果为2.2w

------------这个是name中只能有英文,不能有数字和中文?
guguda2008 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]
SQL codeselect*from tbwhere namelike'%[吖-做]%'
[/Quote]
就是这个了
mlsml 2009-07-31
  • 打赏
  • 举报
回复
都高手啊,本以为只能用程序正则出结果的。。。
worlddba 2009-07-31
  • 打赏
  • 举报
回复
学习了
zimu312500 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feixianxxx 的回复:]
SQL code-- =========================================
-- -----------t_mac 小编----------------希望有天成为大虾----
-- =========================================IFOBJECT_ID('tb')ISNOTNULLDROPTABLE tbGOCREATETABLE ¡­
[/Quote]


厄,那name要是数字呢?
xiequan2 2009-07-30
  • 打赏
  • 举报
回复
select *
from tb
where PATINDEX('%[a-z]%',name)=0

/*name
--------------------
张三
李四

(2 行受影响)

*/
feixianxxx 2009-07-30
  • 打赏
  • 举报
回复
-- =========================================
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================

IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
GO
CREATE TABLE tb(name varchar(20))
go
insert tb SELECT
'aaa' UNION ALL SELECT
'张三' UNION ALL SELECT
'bbb' UNION ALL SELECT
'李四'
go
select *
from tb
where name not like'%[a-z]%'
go
/*------------
(4 行受影响)
name
--------------------
张三
李四
-------*/
feixianxxx 2009-07-30
  • 打赏
  • 举报
回复
晕 看错了。。。
晕死。。
htl258_Tony 2009-07-30
  • 打赏
  • 举报
回复

---------------------------------
-- Author: htl258(Tony)
-- Date : 2009-07-30 20:33:09
---------------------------------
--> 生成测试数据表:tb

If not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([name] nvarchar(3))
Insert tb
Select 'aaa' union all
Select '张三' union all
Select 'bbb' union all
Select '李四'
Go
--Select * from tb

-->SQL查询如下:
select * from tb where name like '%[吖-做]%'
/*
name
----
张三
李四

(2 行受影响)
*/
select * from tb where patindex('%[吖-做]%',name)>0
/*
name
----
张三
李四

(2 行受影响)
*/
htl258_Tony 2009-07-30
  • 打赏
  • 举报
回复
select * from tb where name like '%[吖-做]%'
feixianxxx 2009-07-30
  • 打赏
  • 举报
回复
select *
from tb
where patindex('%[1-9]%',name)<0

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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