sql查询字符串字段是否存在传进来字符串中的一个值

比如说:
数据库中 ids 字段值为 aa,bb,cc
传进来的 pid 字段值为 cc,dd,ee
这样可以查到一条数据

这样可能才行吧,那pid拆分,然后再在sql语中用like语句:
select * from talbe where ids like '%pid(拆分后)%'。追问

这个传进来的字符串长度不定,都是以逗号隔开。这个拆分函数该怎么写列

追答

我现在有一个字符串"1,2,3,4,(5,6),7,(8,(9,10))" 要统计,的个数
按常规 我想按 , 拆成7个
1
2
3
4
(5,6)
7
(8,(9,10))
然后统计 , 的个数 本来这样 , 的个数应该是6个 就是说把(5,6),(8,(9,10))看成一体
不过我只会统计9个出来……

declare @s varchar(100)
set @s="1,2,3,4,(5,6),7,(8,(9,10))"
select
(len(@s)-len(replace(@s,",","")))
-(len(@s)-len(replace(@s,"(","")))

/**

-----------
6

(所影响的行数为 1 行)
**/

SQL codecreate table #tb
(
id int,
col varchar(50),
num int
)
insert into #tb select 1,"aa,bb,cc",10
union all select 2,"aa,aa,bb",20
union all select 3,"aa,aa,bb",20
union all select 4,"dd,ccc,c",30
union all select 5,"ddaa,ccc",40
union all select 6,"eee,ee,c",50

declare @Len int
select top 1 @Len=len(col)+1 from #tb order by len(col)
select @Len
set rowcount @Len
select ID=identity(int,1,1) into #TT from dbo.syscolumns A,dbo.syscolumns B
set rowcount 0
;with hgo as
(
select b.id,
number=substring(col,A.id,charindex(",",col+",",A.id)-A.id)
from #TT A join #tb b on substring(","+col,A.id,1)=","
)
select number,count(distinct id) [count],count(number) [number] from hgo group by number

追问

吐血,有这么麻烦啊,我统计的可能有几十个额。用instr 的效率比 like 的高吧。charindex这个函数在pl/sql中用不了额

追答

这个就看个人了。如查你有更好的方法就用吧。

追问

自己在好好想想额,不过还是谢谢了,大虾!阿里嘎多

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-12
。。。把传进来字符串当作查询的条件 如果查不出值来则不存在追问

可以写一个sql 例子么

sql中比较一个字符串中是否含有另一个字符串中的一个字符
sql中比较一个字符串中是否含有另一个字符或字符串可用charindex函数。 如: 1 select charindex('爱','我爱祖国') 结果为: 返回值2为“爱”在“我爱祖国”中的位置。 如: 1 select charindex('a','我爱祖国') 结果为: 返回值为0,则代表“a”不存在于“我爱祖国”字符串中。 语法: CHARINDEX ( expre...

sql中比较一个字符串中是否含有另一个字符串中的一个字符
select instr('abcde','cd') from dual 结果是3 instr()>0表示 后面的字符串包含于前面的字符串

sql语句,怎样判断一个字段中是否存在某一个值
INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual;INSTRING --- 9 ...

sql判断字符是否在字符串中,字符串用,隔开
这个就是用到了in关键字,同样的还有not in关键字查询的便是不包含某字符串的结果。如果需要判断是否在,如果在(或者不在)需要返回值的话,用is null关键字加一个判断,判断一下就可以了。

SQL 怎样判断一个字段中是否存在某一个值
INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual;INSTRING --- 9 ...

如何用sql语句,判断数据库中某字段的内容,包含于某字符串
1:可以利用CHARINDEX(或者 PATINDEX) 函数返回字符或者字符串在另一个字符串中的起始位置。 SELECT CHARINDEX('ad','rrdadgff') 返回4; 2:可以利用like进行模糊查询, like ‘%字符串%’ 3:利用全文索引

在sql语句中怎么判断一个字段是否包含在另一个字符串中
思路是,读取B.name字符串后进行字符串的的分割 name.,然后最后执行模糊查询A表,可以这样 WHERE (A.nameLIKE '%查%') AND (A.nameLIKE '%体%')只能说完全用sql语句实现,有点难吧!string name = "查体";char[] NameChar = name.ToArray();string SqlStr = "select * from A "...

SQL语句 substr() 查询字符串中有没有某个值
oracle的话可以这样写:select * from student where instr(name,'张') != 0

怎么判断SQL数据库里某一列是否包含某个值
如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接...

如何筛选SQL字符串字段中部分值
例如有一个KKBH(卡口编号)字段,这是一个字典字段(对应另一个实体表(卡口表)的编号字段)。这个字段的值保存所属卡口值域{01,02,03}本来想到的是通过or来实现,这样需要动态生成SQL语句。后来想到一个办法用charindex搜索SQL字符串的办法。将所有的要查的卡口编号组成类似'01@02'这样待查字符串。...

相似回答
大家正在搜