SQL Select语句返回前三个字符不相等的行

时间:2014-11-17 17:10:05

标签: sql-server

我正在尝试编写一个SQL select查询,该查询将从表中返回行,其中一个条件是一个特定列中的前3个字母不等于' dis',&#39 ;去了',' pur'或者' tra'

我有什么

SELECT col1, col2, col3, col4, col5, col6, 
FROM [HOME].[dbo].[TABLE] 
Where col1 = '5669' and col4 <> 'I' 
and   left((col5,3) <> ['dis', 'gon', 'pur', 'ret', 'tra'])

有人可以开导我吗?

谢谢,

TD

3 个答案:

答案 0 :(得分:2)

使用NOT IN子句代替<> operator,它将比较值列表。如果要比较单个值,则可以使用<>,但在您的情况下,您需要与值列表进行比较,因此请使用NOT IN子句

SELECT col1,col2,col3,col4,col5,col6,
FROM   [HOME].[dbo].[TABLE]
WHERE  col1 = '5669'
       AND col4 <> 'I'
       AND LEFT(col5, 3) NOT IN ( 'dis', 'gon', 'pur', 'ret', 'tra' ) 

答案 1 :(得分:1)

尝试:

SELECT col1, col2, col3, col4, col5, col6
FROM [HOME].[dbo].[TABLE]
WHERE col1 = '5669' AND col4 <> 'I' AND LEFT(col5,3) NOT IN ('dis','gon',pur','ret',tra')

答案 2 :(得分:0)

另一种方式是使用一堆NOT LIKE。与显示的其他示例相比,它有点冗长。

SELECT col1, col2, col3, col4, col5, col6, 
FROM [HOME].[dbo].[TABLE] 
Where 
    col1 = '5669' 
    and col4 <> 'I' 
    and col5 NOT LIKE 'dis%'
    and col5 NOT LIKE 'gon%'
    and col5 NOT LIKE 'pur%'
    and col5 NOT LIKE 'ret%'
    and col5 NOT LIKE 'tra%'