比如 我现在有一个字段里有很多帐号有:123456,123456789之类近似的
现在我要查找精确的一个帐号在这个字段里只要查到123456 不要123456789,怎么查?like应该不行全查出来了近似的
------解决方案--------------------
用CHARINDEX判断,字符串前后补齐逗号
CHARINDEX(',123456,123456789,',',123456,')>0------解决方案--------------------
IF (OBJECT_ID('fn_split')) IS NOT NULL
DROP FUNCTION fn_split
GO
--创建字符串拆分函数
CREATE FUNCTION fn_split
(
@c NVARCHAR(MAX) ,
@split NVARCHAR(20) = ','
)
RETURNS @t TABLE ( col NVARCHAR(MAX) )
AS
BEGIN
WHILE ( CHARINDEX(@split, @c) <> 0 )
BEGIN
INSERT @t
( col
)
VALUES ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1)
)
SET @c = STUFF(@c, 1, CHARINDEX(@split, @c) + LEN(@split) - 1,
'')
END
IF ( @c <> '' )
INSERT @t
( col )
VALUES ( @c )
RETURN
END
IF (OBJECT_ID('tempdb.dbo.#tab')) IS NOT NULL
DROP TABLE #tab
GO
--创建测试表
CREATE TABLE #tab
(
id INT IDENTITY(1,1),
colname nvarchar(255)
)
--插入测试数据
INSERT INTO #tab(colname)
SELECT '123456,123456789,4567,89'
UNION ALL
SELECT '123456,123456789,1223434,56789,456,789'
--查询结果
SELECT id,col FROM #tab
OUTER APPLY fn_split(colname,',')
WHERE col IN ('123456','456')