假设我有名字,姓氏 现在我连接名字,姓氏如下
SELECT CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name) AS full_name from usertable
现在我想在full_name上执行%通配符搜索,如下所示
SELECT CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name) AS full_name from usertable Where full_name like 'hos%'
有可能吗? 顺便说一下,我不想为此创建一个视图!
答案 0 :(得分:2)
你必须这样做。
SELECT CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name) AS full_name
from usertable
Where (CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name)) like 'hos%'
答案 1 :(得分:1)
执行此类连接操作的另一种方法是使用类似这样的ISNULL函数
SELECT ISNULL(CONVERT(nvarchar(50), first_name) + ' ', '')
+ ISNULL(CONVERT(nvarchar(50), last_name),'')
WHERE ISNULL(CONVERT(nvarchar(50), first_name) + ' ', '')
+ ISNULL(CONVERT(nvarchar(50), last_name),'') LIKE 'hos%'
答案 2 :(得分:1)
我建议你使用子查询:
select ut.*
from (SELECT CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name) AS full_name
from usertable
) ut
Where full_name like N'hos%';
这很有用,因为您不必在两个地方重复表达 - 这可能会导致维护问题。
但是,您正在寻找全名的方式,看起来您只关心名字。所以这也有效:
SELECT CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name) AS full_name
from usertable
where first_name like N'hos%'
请注意,我还将常量更改为显式位于国家字符集中,因为您要将列转换为nvarchar()
。
答案 3 :(得分:0)
您可以从子查询中获取全名,然后使用比较运算符'Like':
SELECT full_name
FROM(SELECT *
,CONVERT (nvarchar(50), first_name) + ' ' + CONVERT (nvarchar(50), last_name) AS full_name from usertable)t1
WHERE full_name like 'hos%'