如果我的数据库中有一个Address1和Address2的列,我如何组合这些列以便我只能在我的select语句中对它执行操作,我仍然将它们分开放在数据库中。我希望能够做到这一点
WHERE completeaddress LIKE '%searchstring%'
其中completedaddress是Address1和Address2的组合。 searchstring就像他们搜索的数据一样。因此,如果他们在Address1中有'123 Center St',在Address2中有'Apt 3B',如果搜索字符串是'Center St 3B',我怎么能选择它?这可以用SQL吗?
答案 0 :(得分:40)
我认为这就是你要找的 -
select Address1+Address2 as CompleteAddress from YourTable
where Address1+Address2 like '%YourSearchString%'
为了防止在我们使用address2附加address1时创建复合词,您可以使用它 -
select Address1 + ' ' + Address2 as CompleteAddress from YourTable
where Address1 + ' ' + Address2 like '%YourSearchString%'
因此,'123 Center St'和'Apt 3B'将不会是'123 Center StApt 3B',但将是'123 Center St Apt 3B'。
答案 1 :(得分:8)
在MySQL中你可以使用:
SELECT CONCAT(Address1, " ", Address2)
WHERE SOUNDEX(CONCAT(Address1, " ", Address2)) = SOUNDEX("Center St 3B")
SOUNDEX
函数在大多数数据库系统中的工作方式类似,我无法想到MSSQL的语法,但距离上面的内容不会太远。
答案 2 :(得分:1)
如果您的address1 = '123 Center St'
和address2 = 'Apt 3B'
即使您合并并执行了LIKE
,也无法将搜索字符串作为'Center St 3B'
进行搜索。但是,如果您的搜索字符串为'Center St Apt'
,那么您可以使用 -
WHERE (address1 + ' ' + address2) LIKE '%searchstring%'
答案 3 :(得分:1)
SELECT StaffId,(Title+''+FirstName+''+LastName) AS FullName
FROM StaffInformation
您在括号中写的内容将显示在单个列中。 您希望在下面的标题和名字写入语法中间有一个点,
SELECT StaffId,(Title+'.'+FirstName+''+LastName) AS FullName
FROM StaffInformation
这些语法适用于MS SQL Server 2008 R2 Express Edition。
答案 4 :(得分:0)
如果您不想更改数据库架构(我不想这个简单的查询),您可以将它们组合在过滤器中,如下所示:
WHERE (Address1 + Address2) LIKE '%searchstring%'