我将说明我的问题:
查看包含两列的表格:Col1和Col2。
-----------------
| Col1 | Col2 |
-----------------
| 1a1 | 2b2 |
-----------------
| 11b | 22a |
-----------------
我正在尝试在任一列中选择包含 a
的值。
所需的输出是:
------------
| MyNewCol |
------------
| 1a1 |
------------
| 22a |
------------
提前感谢您的时间。
答案 0 :(得分:2)
select col1 as newCol
from your_table
where charindex('a', col1) > 0
union all
select col2
from your_table
where charindex('a', col2) > 0
答案 1 :(得分:1)
试试这个:
SELECT col1 AS output_col
FROM your_table
WHERE CHARINDEX('a', col1, 1) > 0
UNION ALL
SELECT col2
FROM your_table
WHERE CHARINDEX('a', col2, 1) > 0
找到其中任一值包含“a”并执行UNION ALL的记录。如果列数超过2列,则可能需要采用不同的方法,因为有很多UNION可能会导致性能问题。
答案 2 :(得分:1)
您可以使用UNION ALL语句
SELECT [Col1] as MyNewCol FROM [Table] where Col1 like '%a%'
UNION ALL
SELECT [Col2] as MyNewCol FROM [Table] WHERE Col2 like '%a%'
或UNION如果您需要不同的结果
答案 3 :(得分:1)
我想使用CROSS APPLY
执行此操作只需要单表扫描
SELECT MyNewCol
FROM Yourtable
CROSS apply(SELECT Col1
WHERE [Col1] LIKE '%a%'
UNION ALL
SELECT Col2
WHERE [Col2] LIKE '%a%') cs (MyNewCol)