SQL:选择匹配任一列的位置

时间:2017-01-14 19:12:14

标签: sql sql-server

我将说明我的问题:

查看包含两列的表格:Col1和Col2。

-----------------   
| Col1  | Col2  |
-----------------
| 1a1   | 2b2   |
-----------------
| 11b   | 22a   |
-----------------

我正在尝试在任一列中选择包含 a 的值。

所需的输出是:

------------
| MyNewCol |
------------
| 1a1      |
------------
| 22a      |
------------ 

提前感谢您的时间。

4 个答案:

答案 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)