是否可以在 T-SQL 中编写LIKE
条件以匹配包含通配符的逗号分隔列表到字符串。让我用一个例子进一步解释:
假设您在字段中有以下命令分隔的 url 列表:
'/, /news/%, /about/'
现在这里有一些我想与上面的字符串匹配的字符串示例:
- '/'
- '/消息/'
- '/新闻/2/'
- '/关于/'
这是一些不匹配的字符串:
- '/接触/'
- '/关于我/'
我过去通过编写一个拆分函数然后对每个函数做一个类似的操作来实现这一点。但是,我试图让我的查询在不支持函数的 SQL Server CE 中工作。
如果您想知道我是如何使用 split 函数实现它的:
SELECT Widgets.Id
FROM Widgets
WHERE (SELECT COUNT(*) FROM [dbo].[Split](Urls, ',') WHERE @Input LIKE Data) > 0
这是拆分功能:
CREATE FUNCTION [dbo].[Split]
(
@RowData NVARCHAR(MAX),
@Separator NVARCHAR(MAX)
)
RETURNS @RtnValue TABLE
(
[Id] INT IDENTITY(1,1),
[Data] NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @Iterator INT
SET @Iterator = 1
DECLARE @FoundIndex INT
SET @FoundIndex = CHARINDEX(@Separator, @RowData)
WHILE (@FoundIndex > 0)
BEGIN
INSERT INTO @RtnValue ([Data])
SELECT Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1)))
SET @RowData = SUBSTRING(@RowData, @FoundIndex + DATALENGTH(@Separator) / 2, LEN(@RowData))
SET @Iterator = @Iterator + 1
SET @FoundIndex = CHARINDEX(@Separator, @RowData)
END
INSERT INTO @RtnValue ([Data])
SELECT Data = LTRIM(RTRIM(@RowData))
RETURN
END
如果有人可以提供帮助,我将不胜感激。谢谢