当前位置:编程学习 > C#/ASP.NET >>

SQL语言问题,急急!

SQL 表中 有一列名为Choose的列,类型为Varchar。其中的数据为,例如:4,8,9,10,11,12
是一个字符串,有几百个这样的数据。现在我想查询出其中含有‘8’这个字符的行,怎么写SQL语言。
就在SQL中实现 --------------------编程问答-------------------- 这里 --------------------编程问答-------------------- select * from sql where choose like '%,8,%'; --------------------编程问答--------------------
引用 1 楼  的回复:
这里

sp大哥又在调皮了 --------------------编程问答-------------------- charindex,最简单

select * from yourtable where charindex('8',choose)>0
--------------------编程问答-------------------- 1L 的

4L正解 --------------------编程问答-------------------- select * from sql where choose like '%8%';
--------------------编程问答--------------------
select * from yourtable where charindex('8',choose)>0
這個好 --------------------编程问答-------------------- 如果18也算得话,我那个就是错的 --------------------编程问答-------------------- 如果确定只要8,其它含8的不要,我那句还得改改
select * from sql where choose like '%,8,%' or choose like '8,%'  or choose like '%,8'  --------------------编程问答-------------------- 啊呀!!!!!!
理解错了,“4,8,9,10,11,12”不是一个字符串吧? --------------------编程问答-------------------- "4,8,9,10,11,12"是字符串
如果我要查找包含'1' 这个字符的行,如果用%1%,就会出现有'11'这个字符也会出现.
怎么改写查询语言?字符范围我设定只能是1~14. --------------------编程问答--------------------
引用 11 楼  的回复:
"4,8,9,10,11,12"是字符串
如果我要查找包含'1' 这个字符的行,如果用%1%,就会出现有'11'这个字符也会出现.
怎么改写查询语言?字符范围我设定只能是1~14.

"4,8,9,10,11,12"整个字符串是不是一个字段里的一个值?
如果查找包含1的字段,是否要包括10、11、12、13、14?
你用的数据库是SQL Server吗? --------------------编程问答--------------------
引用 9 楼  的回复:
如果确定只要8,其它含8的不要,我那句还得改改
select * from sql where choose like '%,8,%' or choose like '8,%'  or choose like '%,8'

正解,用charindex有漏洞 --------------------编程问答--------------------
引用 13 楼  的回复:
引用 9 楼 的回复:

如果确定只要8,其它含8的不要,我那句还得改改
select * from sql where choose like '%,8,%' or choose like '8,%' or choose like '%,8'

正解,用charindex有漏洞


如果按照这样的话,如果我的字符串里面有两组这样的数据"1,2,3,4,8,9"  和"1,3,4,5,12,13"的话,
我要查找"2"字符,其他"2"不要,那第二串字符里面没有"2",但却会出现查询结果. --------------------编程问答--------------------
引用 14 楼  的回复:
如果按照这样的话,如果我的字符串里面有两组这样的数据"1,2,3,4,8,9" 和"1,3,4,5,12,13"的话,
我要查找"2"字符,其他"2"不要,那第二串字符里面没有"2",但却会出现查询结果.

不会呀,你确定没有写错? --------------------编程问答--------------------

create table test.str (a varchar(10));
insert into test.str  values ('1,3,5,18,9');
insert into test.str  values ('1,3,2,18,9');
insert into test.str  values ('22,3,18,9');
insert into test.str  values ('1,3,12,9');
select * from test.str where a like '%,2,%' or a like '2,%' or a like '%,2';

我测试了一下,没有字符转义的需要,你也可以在用这样的语句。

select * from test.str where a like '%\,2\,%' or a like '2\,%' or a like '%\,2';

--------------------编程问答-------------------- 要先问一下,含有8,像18,88这样的算不算?
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,