如果数据表中一个字段的值是【‘2345’,‘23’】这样的,如果判断是否存在,用like 会匹配多个。
使用splitTotable函数可以精确匹配到某个值
select * from tbids where (
select count(1) from fun_SplitStrToTable(ids,',') a
where a.col='23')>0
Create FUNCTION [fun_SplitStrToTable]
(
@s VARCHAR(max) , --待拆分的字符串
@split VARCHAR(10) --分隔符
)
RETURNS @re TABLE ( xh INT, col VARCHAR(100) )
AS
BEGIN
--根据字符串中的分隔符分割字符串
--创建分拆处理的辅助表(用户定义函数中只能操作表变量)
DECLARE @t TABLE ( ID INT IDENTITY, b BIT )
DECLARE @re1 TABLE ( xh INT, col VARCHAR(100) )
INSERT @t
( b )
SELECT TOP 8000
0
FROM syscolumns a ,
syscolumns b
INSERT @re1
SELECT ID ,
SUBSTRING(@s, ID,
CHARINDEX(@split, @s + @split, ID) - ID)
FROM @t
WHERE ID <= LEN(@s + 'a')
AND CHARINDEX(@split, @split + @s, ID) = ID
INSERT INTO @re
SELECT ROW_NUMBER() OVER ( ORDER BY xh ) xh ,
col
FROM @re1
RETURN
END