2011-01-11 64 views
3

我有一个公司名称列表,并希望显示以特定字符开头的所有名称。例如,d让MySQL忽略LIKE条件开始的“The”?

所以查询是

SELECT * FROM company WHERE name LIKE 'd%' 

但我也想与启动公司“的”如此

SELECT * FROM company WHERE name LIKE 'd%' OR name LIKE 'The d%' 

但现在有点棘手,当我们去“T”我想删除所有以'The' 开头的字词,同时保留以't'开头的其他字词(并且还保留类似'The Truffle House'的字词之后'''以't'开始)。

任何想法?想保持在MySQL中的逻辑...

回答

1
SELECT * 
FROM company 
WHERE (name LIKE '?%' AND NOT name LIKE 'The %') 
     OR name LIKE 'The ?%' 
+0

很确定OP只是用`d`作为例子。他们说它适用于`d`和所有其他字母,除了't`外,他们希望应用稍微不同的逻辑。 – 2011-01-11 18:37:40

1

尝试:

SELECT * FROM company WHERE name regexp '^(The)d' 
0

感谢我只是选择了这种

SELECT * 
FROM company 
WHERE (name LIKE '?%' AND NOT name LIKE 'The %') 
     OR name LIKE 'The ?%' 

t我有答案刚刚做了一个长长的清单NOT LIKE所以

AND (company_name LIKE 'The%t' OR company_name LIKE 't%') AND company_name NOT LIKE 'The a%' AND company_name NOT LIKE 'The b%'等....