我目前正在制作一个小型数据库(少于 50 个条目),但我在查询时遇到了问题。我目前的查询是
SELECT Name
FROM Customers
WHERE Name LIKE '%Adam%'
名称的格式为“Adam West”。
该查询在检索所有名称中带有“Adam”的人时效果很好,但我只想检索名字,而不是姓氏。我不想拆分列,但想知道如何重写我的查询来解决这个问题。
我目前正在制作一个小型数据库(少于 50 个条目),但我在查询时遇到了问题。我目前的查询是
SELECT Name
FROM Customers
WHERE Name LIKE '%Adam%'
名称的格式为“Adam West”。
该查询在检索所有名称中带有“Adam”的人时效果很好,但我只想检索名字,而不是姓氏。我不想拆分列,但想知道如何重写我的查询来解决这个问题。
从客户中选择名称,其中名称如“亚当%”
如果您使用空格存储名称作为分隔符示例“Adam abcd”,其中“Adam”是名字,“abcd”作为姓氏,那么以下将起作用
SELECT Expr1
FROM (SELECT LEFT(Name, CHARINDEX(' ', Name, 1)) AS Expr1
FROM Customers) AS derivedtbl_1
WHERE (Expr1 LIKE 'Adm%')
有关更多详细信息,请阅读本文http://suite101.com/article/sql-functions-leftrightsubstrlengthcharindex-a209089
如果您的客户的名字以名字开头(如Adam West),您可以使用
select Name
from Customers
where Name like 'Adam %'
否则,如果名称的格式是<last name> <first name>
你可以使用
select Name
from Customers
where Name like '% Adam'
试试这个
{SELECT Name FROM Customers WHERE SUBSTRING(Name,1,CHARINDEX(' ',Name)-1) LIKE '%Adam%' }
我假设名字和姓氏是用空格分隔的,我把名字拿出来了
使用 SUBSTRING(Name,1,CHARINDEX(' ',Name)-1) 并比较您想要的方式。如果您有其他东西将 charindex 中的名字和姓氏与 saparater 分开。
如果需要任何其他帮助,请告诉我。
问候
阿舒托什
您确实应该“拆分”列并规范化您的表,以避免必须使用复杂的字符串函数来搜索姓氏或名字或您需要查找的任何内容。如果有人先输入姓氏然后输入名字怎么办?还是只是一个昵称?
也就是说,请检查Microsoft technet 网站LIKE
上的使用情况。以下查询应该对您的情况有所帮助:
SELECT Name
FROM Customers
WHERE Name LIKE 'Adam%'