建立了一个表DAT_SUM,其中有两个字段,C_NO和C_CODES,当然还有其他字段,C_NO是唯一的,C_CODES是字符型,保存的是一些代码的组合,可以就一个代码(代码都是数字,但是是字符型的),如'1'或'131'等,也可能是用逗号(,)隔开的几个代码集,如('1','23','12')。现在要写一个查询语句,SELECT出所有包含代码'1'、'3'和'12'的记录。
如果C_CODES只包含一个代码很好办。但现在表中的一些记录中C_CODES字段包含了多个代码,就不知道该如何处理了,请教高人?谢谢了
如果C_CODES只包含一个代码很好办。但现在表中的一些记录中C_CODES字段包含了多个代码,就不知道该如何处理了,请教高人?谢谢了
where charindex(',1,',','+c_codes+',')>0
or charindex(',3,',','+c_codes+',')>0
or charindex(',12,',','+c_codes+',')>0
如果不能保证,一个是可以写自定义函数,一个是可以通过分割参数拼语句拼出C_CODE LIKE '%''1''%' OR C_CODE LIKE '%''3''%' OR C_CODE LIKE '%''12''%'这样的条件最后输出一个EXEC实现。
where charindex(',1,', ','+c_codes+',') >0
or charindex(',2,', ','+c_codes+',') >0
or charindex(',12,', ','+c_codes+',') >0;
select * from dat_sum
where charindex(',1,', ','+c_codes+',') >0
or charindex(',2,', ','+c_codes+',') >0
or charindex(',12,', ','+c_codes+',') >0;
WHERE C_CODES LIKE '%1%' OR C_CODES LIKE '%3%' OR C_CODES LIKE '%12%'
where charindex(',1,', ','+c_codes+',') >0
or charindex(',2,', ','+c_codes+',') >0
or charindex(',12,', ','+c_codes+',') >0;