表一字段匹配表二字段的问题

wybwml2012 2019-01-22 02:54:31
请教sql大神一个问题:
表1Gov_File:
ID L_Name F_Name F_Num LB_Name
1 张三,李四 文件1 1001 书记签批件
2 张三,王五 文件2 1002 保密件
3 李四 文件3 1003 领导批示件
表2Gov_Leader_Man:
L_ID L_Name UserID
1 张三 11
2 李四 12
3 王五 13
如何在表1中找出L_Name字段在表2里面的记录:
select * from gov_file where L_name in(select L_Name form Gov_Leader_Man)

...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-01-22
  • 打赏
  • 举报
回复
加个表值函数:
IF OBJECT_ID('[dbo].[Fun_String2ToStringArray]') IS NOT NULL 
	DROP FUNCTION [dbo].[Fun_String2ToStringArray]
GO
CREATE FUNCTION [dbo].[Fun_String2ToStringArray](@str NVARCHAR(MAX), @split NVARCHAR(10))
RETURNS @table TABLE ([item] NVARCHAR(max))
AS
BEGIN
    IF LEN(@split) = 0
      BEGIN
        SET @split = N','
      END
 
    DECLARE @xml XML;
    SET @xml = CONVERT(XML, '<x><![CDATA[' + replace(CONVERT(VARCHAR(MAX), @str), @split, ']]></x><x><![CDATA[') + ']]></x>')
 
    INSERT INTO @table
      SELECT item
      FROM   (SELECT c.value('text()[1]', 'nvarchar(4000)') [item]
              FROM   @xml.nodes('/x') t(c)) t
      WHERE  item IS NOT NULL
 
    RETURN
END
GO
查询:
SELECT * FROM GOV_FILE A INNER JOIN GOV_LEADER_MAN B 
    ON B.L_Name in ( select item from dbo.Fun_String2ToStringArray(A.L_Name,',') )
RINK_1 2019-01-22
  • 打赏
  • 举报
回复

SELECT * FROM GOV_FILE A
JOIN GOV_LEADER_MAN B ON ','+A.L_NAME+',' LIKE '%,'+B.L_NAME+',%'

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧