在SQL中,如果要使用通配符执行SELECT,则使用:
SELECT * FROM table_name WHERE field_name LIKE '%value%'
Run Code Online (Sandbox Code Playgroud)
如果您想使用可能值的数组,您可以使用:
SELECT * FROM table_name WHERE field_name IN ('one', 'two', 'three')
Run Code Online (Sandbox Code Playgroud)
但是,如果你想同时使用通配符和数组,你会怎么做?
有一些像:
SELECT * FROM table_name WHERE field_name LIKE IN ('%one', '_two', 'three[abv]')
Run Code Online (Sandbox Code Playgroud)
LaG*_*ere 11
SELECT *
FROM table_name
WHERE field_name LIKE '%one'
OR field_name LIKE '_two'
OR field_name LIKE 'three[abv]'
Run Code Online (Sandbox Code Playgroud)
您可以将 join 与类似以下查询的语句一起使用:
SELECT * FROM table_name t
JOIN dbo.Split('one,two,three',',') s ON t.field_name LIKE N'%'+s.item+'%'
Run Code Online (Sandbox Code Playgroud)
我创建了这个函数来分割字符串:
CREATE FUNCTION [dbo].[Split] (@StringToSplit NVARCHAR(MAX), @SpliterChar CHAR(1))
RETURNS
@returnList TABLE ([item] [NVARCHAR] (500))
AS
BEGIN
DECLARE @nItem NVARCHAR(500);
DECLARE @pos INT;
WHILE CHARINDEX(@SpliterChar, @StringToSplit) > 0
BEGIN
SELECT @pos = CHARINDEX(@SpliterChar, @StringToSplit);
SELECT @nItem = SUBSTRING(@StringToSplit, 1, @pos-1);
if (@nItem <> '') INSERT INTO @returnList SELECT @nItem;
SELECT @StringToSplit = SUBSTRING(@StringToSplit, @pos+1, LEN(@StringToSplit)-@pos);
END
if (@StringToSplit<>'') INSERT INTO @returnList SELECT @StringToSplit;
RETURN
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38329 次 |
| 最近记录: |