2011-10-05 78 views
1

我有姓和名。如何将两列合并为一个LIKE语句?

我需要能够搜索史密斯或史密斯j。

我有这个在我的where子句:

lastname LIKE '%SMITH%' AND firstname LIKE '%J%' 

我在做什么错?我怎样才能将姓氏和姓氏合并为一个LIKE呢?数据里有一个史密斯j。

谢谢你的帮助。

我正在使用Oracle 11g,如果这很重要。

编辑:忘了加引号。我确实有。谢谢。

编辑:它看起来像我做对了,所以它必须是别的东西。

+1

混合小写字母'smith'和大写字母'J'的部分是故意的? @erwin –

+0

我改变了它。 – johnny

+0

也许这个领域是不区分大小写?所以'%j%'和'%J%'会返回其他结果?! – Thomas

回答

4

尝试:

UPPER(lastname) LIKE '%SMITH%' AND UPPER(firstname) LIKE '%J%' 

或者,如果你真的需要它在一个声明:

UPPER(lastname||firstname) LIKE '%SMITH%J%' 
+0

+1是唯一回答问题作者明显缺失的不区分大小写的答案。 –

0

怎么样而不是使用like,使用正则表达式匹配两者?

1

除非我误解你的问题

lastname LIKE '%smith%' 

本身将返回两者兼而有之?

+0

添加缺少的单引号,你得到我的投票。 ;) –

+0

是的,但我需要缩小它,以便它也使用第一个名称。 – johnny

+0

添加引号:) – dan360

1

您需要周围的串省略号:

lastname LIKE '%smith%' AND firstname LIKE '%J%' 
0

怎么样

(
    (lastname LIKE '%SMITH%') AND 
    ((firstname LIKE '%J%') OR (firstname IS NULL) OR (firstname ='')) 
) 
相关问题