我有一个表“user”,它有一个col“access”,其中多个值用逗号分隔。 我有另一个表“代码”,其中有一列“SCRCODES”,其中一些用户代码为单值。 所以我需要检查表“user”的col“access”中的多个值是否具有表“codes”的“SCRCODES”列中的任何值
有人请就此提出建议。 感谢答案 0 :(得分:0)
我认为这会对你有所帮助:
ALTER FUNCTION [dbo].[Split]
(
@RowData NVARCHAR(MAX) ,
@SplitOn NVARCHAR(5)
)
RETURNS @ReturnValue TABLE ( Data NVARCHAR(MAX) )
AS
BEGIN
DECLARE @Counter INT
SET @Counter = 1
WHILE ( CHARINDEX(@SplitOn, @RowData) > 0 )
BEGIN
INSERT INTO @ReturnValue
( data
)
SELECT Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1,
CHARINDEX(@SplitOn,
@RowData) - 1)))
SET @RowData = SUBSTRING(@RowData,
CHARINDEX(@SplitOn, @RowData) + 1,
LEN(@RowData))
SET @Counter = @Counter + 1
END
INSERT INTO @ReturnValue
( data )
SELECT Data = LTRIM(RTRIM(@RowData))
RETURN
END;
GO
DECLARE @str VARCHAR(MAX)
SET @str = select access from users where oid = "1"
SELECT *
FROM codes c, users u where c.SCRCODES in dbo.Split(@str, ',')
答案 1 :(得分:0)
我假设你的sercodes不包含逗号。
您可以这样做:
select sercodes from codes
inner join users
on user.codeid = codes.codeid
where charindex(sercodes + ',', access) > 0 or charindex(',' + sercodes , access) > 0
这个想法是访问将以这种方式存储"读,写,执行"。因此,它将以逗号结尾或以逗号开头并且是字符串的一部分..
请告诉我它是否有效。您可以提供实际的表格数据和设计,以获得更准确的查询。