我正在尝试编写一个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
答案 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%'