MS SQL Server输入列1 Cat 1包含由空格分隔的多个值,Cat2包含要比较的值。如果Cat2值与Cat1中的任何一个值匹配,则所需输出列应为1,如果不匹配,则所需输出列应为0。分隔符是一个空间。有点像 - 如果用逗号替换空格后Cat1 = In(cat2),则回答= 1,但我不理解完成此操作的语法。任何人都可以帮助我。提前谢谢。
DECLARE @TABLE TABLE(Cat1 VARCHAR(50),Cat2 VARCHAR(50), answer VARCHAR(50))
INSERT INTO @TABLE VALUES
('3 4 6 36 a b','36','1'),
('5 4 6 36 a b','3','0'),
('7 5 6 46 a b','4','0'),
('7 5 6 46 a b','5','1'),
('3 4 6 36 a b','7','0')
select cat1, cat2 , answer
FROM @TABLE
去
Cat1 Cat2 output
3 4 6 36 a b 36 1
3 4 6 36 a b 3 1
3 4 6 36 a b 4 1
3 4 6 36 a b 7 0
开发
答案 0 :(得分:1)
MS SQL Server 2008架构设置:
CREATE TABLE Test_Table(Cat1 VARCHAR(50),Cat2 VARCHAR(50))
INSERT INTO Test_Table VALUES
('3 4 6 36 a b','36'),
('3 4 6 36 a b','3'),
('3 4 6 36 a b','4'),
('3 4 6 36 a b','7'),
('8 4 6 36 a b','b')
查询1 :
SELECT *
,CASE WHEN Cat1 LIKE '% '+ Cat2
OR Cat1 LIKE '% '+ Cat2+ ' %'
OR Cat1 LIKE Cat2+ ' %'
THEN 1
ELSE 0
END AS [OUTPUT]
FROM Test_Table
<强> Results 强>:
| CAT1 | CAT2 | OUTPUT |
|--------------|------|--------|
| 3 4 6 36 a b | 36 | 1 |
| 3 4 6 36 a b | 3 | 1 |
| 3 4 6 36 a b | 4 | 1 |
| 3 4 6 36 a b | 7 | 0 |
| 8 4 6 36 a b | b | 1 |