sqlserver数据库中怎样查询某个字段中含有某些字

时间:2021-11-24 15:01:39
 

比如“一元天”这些字的顺序可以是任意的,而且也可以不相邻,把所有的情况都查询出来

12 个解决方案

#1


用模糊查询%,组合
比如 select usersname from UsersType where username like '%一元天%'

#2


但是“。。。一。。。元。。。天。。。”
“天;;;;元。。。一。。。”等好多情况都没查询出来

#3


这样的查询真的是有些蛋疼   sqlserver数据库中怎样查询某个字段中含有某些字

那就查询字段值  (包含“一”) AND (包含 “元”) AND( 包含“天”)的行吧。

#4


CSDN又抽风了,格式UBB没用了?

类似这样的一条查询
SELECT * FROM OneTable WHERE CHARINDEX(N'一', Field)>0
                                               AND CHARINDEX(N'元', Field)>0
                                               AND CHARINDEX(N'天', Field)>0

#5


引用 2 楼 chenqianle 的回复:
但是“。。。一。。。元。。。天。。。”
“天;;;;元。。。一。。。”等好多情况都没查询出来



DECLARE @table TABLE
(
tid INT,
tname VARCHAR(50)
)
INSERT INTO @table 
SELECT 1,'一元天' UNION
SELECT 2,'元天' UNION
SELECT 3,'一天' UNION
SELECT 4,'元天' UNION
SELECT 5,'天' UNION
SELECT 6,'元' UNION
SELECT 7,'一' UNION
SELECT 8,'一天元'
SELECT * FROM @table WHERE tname LIKE '%一%' OR tname LIKE '%元%' OR tname LIKE '%天%'
/*
tid         tname
----------- ---------
1           一元天
2           元天
3           一天
4           元天
5           天
6           元
7           一
8           一天元

(8 行受影响)
*

#6


你这么写  必须得三个字全有的能查出来

SELECT * FROM OneTable 
WHERE CHARINDEX(N'一', Field)>0 
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0

#7


引用 6 楼 xll617 的回复:
你这么写  必须得三个字全有的能查出来

SELECT * FROM OneTable 
WHERE CHARINDEX(N'一', Field)>0 
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0


比如“一元天”这些字的 顺序可以是任意的,而且也 可以不相邻,把所有的情况都查询出来

这里只提到顺序和是否相邻,再参见2楼的补充,难道不是要全部字符都有的才算匹配吗?

#8


引用 7 楼 abbey 的回复:
引用 6 楼 xll617 的回复:

你这么写 必须得三个字全有的能查出来

SELECT * FROM OneTable
WHERE CHARINDEX(N'一', Field)>0
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0


“比如“一元天”这些字的顺序可以是任意的,而且也可以不相邻,把所有的情况都查……

是的,必须全部字符都有才可以顺序和相邻的条件可以不考虑

#9


引用 6 楼 xll617 的回复:
你这么写 必须得三个字全有的能查出来

SELECT * FROM OneTable 
WHERE CHARINDEX(N'一', Field)>0 
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0

为什么中间不用and 要用“or”呢

#10


请看我4楼的回答,那应该是你需要的。

#11


引用 10 楼 abbey 的回复:
请看我4楼的回答,那应该是你需要的。

那是把or换成and 是吧?
呵呵,鄙人目前大二用的是access数据库以前没学过,有点愚钝,恳请指教

#12


引用 4 楼 abbey 的回复:
CSDN又抽风了,格式UBB没用了?

类似这样的一条查询

SQL code

SELECT * FROM OneTable WHERE CHARINDEX(N'一', Field)>0
                                               AND CHARINDEX(N'元', Field)>0
                     ……

谢谢了大家

#1


用模糊查询%,组合
比如 select usersname from UsersType where username like '%一元天%'

#2


但是“。。。一。。。元。。。天。。。”
“天;;;;元。。。一。。。”等好多情况都没查询出来

#3


这样的查询真的是有些蛋疼   sqlserver数据库中怎样查询某个字段中含有某些字

那就查询字段值  (包含“一”) AND (包含 “元”) AND( 包含“天”)的行吧。

#4


CSDN又抽风了,格式UBB没用了?

类似这样的一条查询
SELECT * FROM OneTable WHERE CHARINDEX(N'一', Field)>0
                                               AND CHARINDEX(N'元', Field)>0
                                               AND CHARINDEX(N'天', Field)>0

#5


引用 2 楼 chenqianle 的回复:
但是“。。。一。。。元。。。天。。。”
“天;;;;元。。。一。。。”等好多情况都没查询出来



DECLARE @table TABLE
(
tid INT,
tname VARCHAR(50)
)
INSERT INTO @table 
SELECT 1,'一元天' UNION
SELECT 2,'元天' UNION
SELECT 3,'一天' UNION
SELECT 4,'元天' UNION
SELECT 5,'天' UNION
SELECT 6,'元' UNION
SELECT 7,'一' UNION
SELECT 8,'一天元'
SELECT * FROM @table WHERE tname LIKE '%一%' OR tname LIKE '%元%' OR tname LIKE '%天%'
/*
tid         tname
----------- ---------
1           一元天
2           元天
3           一天
4           元天
5           天
6           元
7           一
8           一天元

(8 行受影响)
*

#6


你这么写  必须得三个字全有的能查出来

SELECT * FROM OneTable 
WHERE CHARINDEX(N'一', Field)>0 
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0

#7


引用 6 楼 xll617 的回复:
你这么写  必须得三个字全有的能查出来

SELECT * FROM OneTable 
WHERE CHARINDEX(N'一', Field)>0 
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0


比如“一元天”这些字的 顺序可以是任意的,而且也 可以不相邻,把所有的情况都查询出来

这里只提到顺序和是否相邻,再参见2楼的补充,难道不是要全部字符都有的才算匹配吗?

#8


引用 7 楼 abbey 的回复:
引用 6 楼 xll617 的回复:

你这么写 必须得三个字全有的能查出来

SELECT * FROM OneTable
WHERE CHARINDEX(N'一', Field)>0
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0


“比如“一元天”这些字的顺序可以是任意的,而且也可以不相邻,把所有的情况都查……

是的,必须全部字符都有才可以顺序和相邻的条件可以不考虑

#9


引用 6 楼 xll617 的回复:
你这么写 必须得三个字全有的能查出来

SELECT * FROM OneTable 
WHERE CHARINDEX(N'一', Field)>0 
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0

为什么中间不用and 要用“or”呢

#10


请看我4楼的回答,那应该是你需要的。

#11


引用 10 楼 abbey 的回复:
请看我4楼的回答,那应该是你需要的。

那是把or换成and 是吧?
呵呵,鄙人目前大二用的是access数据库以前没学过,有点愚钝,恳请指教

#12


引用 4 楼 abbey 的回复:
CSDN又抽风了,格式UBB没用了?

类似这样的一条查询

SQL code

SELECT * FROM OneTable WHERE CHARINDEX(N'一', Field)>0
                                               AND CHARINDEX(N'元', Field)>0
                     ……

谢谢了大家