比如“一元天”这些字的顺序可以是任意的,而且也可以不相邻,把所有的情况都查询出来
12 个解决方案
#1
用模糊查询%,组合
比如 select usersname from UsersType where username like '%一元天%'
比如 select usersname from UsersType where username like '%一元天%'
#2
但是“。。。一。。。元。。。天。。。”
“天;;;;元。。。一。。。”等好多情况都没查询出来
“天;;;;元。。。一。。。”等好多情况都没查询出来
#3
这样的查询真的是有些蛋疼
那就查询字段值 (包含“一”) AND (包含 “元”) AND( 包含“天”)的行吧。
那就查询字段值 (包含“一”) AND (包含 “元”) AND( 包含“天”)的行吧。
#4
CSDN又抽风了,格式UBB没用了?
类似这样的一条查询
类似这样的一条查询
SELECT * FROM OneTable WHERE CHARINDEX(N'一', Field)>0
AND CHARINDEX(N'元', Field)>0
AND CHARINDEX(N'天', Field)>0
#5
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
SELECT * FROM OneTable
WHERE CHARINDEX(N'一', Field)>0
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0
#7
“比如“一元天”这些字的 顺序可以是任意的,而且也 可以不相邻,把所有的情况都查询出来 ”
这里只提到顺序和是否相邻,再参见2楼的补充,难道不是要全部字符都有的才算匹配吗?
#8
是的,必须全部字符都有才可以顺序和相邻的条件可以不考虑
#9
为什么中间不用and 要用“or”呢
#10
请看我4楼的回答,那应该是你需要的。
#11
那是把or换成and 是吧?
呵呵,鄙人目前大二用的是access数据库以前没学过,有点愚钝,恳请指教
#12
谢谢了大家
#1
用模糊查询%,组合
比如 select usersname from UsersType where username like '%一元天%'
比如 select usersname from UsersType where username like '%一元天%'
#2
但是“。。。一。。。元。。。天。。。”
“天;;;;元。。。一。。。”等好多情况都没查询出来
“天;;;;元。。。一。。。”等好多情况都没查询出来
#3
这样的查询真的是有些蛋疼
那就查询字段值 (包含“一”) AND (包含 “元”) AND( 包含“天”)的行吧。
那就查询字段值 (包含“一”) AND (包含 “元”) AND( 包含“天”)的行吧。
#4
CSDN又抽风了,格式UBB没用了?
类似这样的一条查询
类似这样的一条查询
SELECT * FROM OneTable WHERE CHARINDEX(N'一', Field)>0
AND CHARINDEX(N'元', Field)>0
AND CHARINDEX(N'天', Field)>0
#5
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
SELECT * FROM OneTable
WHERE CHARINDEX(N'一', Field)>0
OR CHARINDEX(N'元', Field)>0
OR CHARINDEX(N'天', Field)>0
#7
“比如“一元天”这些字的 顺序可以是任意的,而且也 可以不相邻,把所有的情况都查询出来 ”
这里只提到顺序和是否相邻,再参见2楼的补充,难道不是要全部字符都有的才算匹配吗?
#8
是的,必须全部字符都有才可以顺序和相邻的条件可以不考虑
#9
为什么中间不用and 要用“or”呢
#10
请看我4楼的回答,那应该是你需要的。
#11
那是把or换成and 是吧?
呵呵,鄙人目前大二用的是access数据库以前没学过,有点愚钝,恳请指教
#12
谢谢了大家