27,579
社区成员
发帖
与我相关
我的任务
分享
--DROP FUNCTION fn_CheckName2AndName3
CREATE FUNCTION fn_CheckName2AndName3
(
@s1 NVARCHAR(50)
,@s2 NVARCHAR(50)
)
RETURNS BIT
BEGIN
IF EXISTS ( SELECT 1
FROM ( SELECT Check1 = CONVERT(XML, '<root><v>'
+ REPLACE(@s1 + ';' + @s2, ';',
'</v><v>') + '</v></root>')
) AS a
CROSS APPLY ( SELECT Col2 = C.v.value('.',
'nvarchar(100)')
FROM a.Check1.nodes('/root/v') C ( v )
) b
GROUP BY b.Col2
HAVING COUNT(1) > 1 )
RETURN 1
RETURN 0
END
GO
--问题1
SELECT * FROM TableA WHERE dbo.fn_CheckName2AndName3(NAME2,NAME3)=1
--问题2
SELECT * FROM TableA WHERE dbo.fn_CheckName2AndName3(NAME2,NAME3+';'+NAME4+';'+NAME5)=1
写一种 方法,自己检查,数据库新增栏位布尔值,维护CHECK,以上是方法,自己改,或自己分拆字符一段段去匹配这样性能高一些