SQL在Select语句中组合两列

时间:2011-03-09 14:43:11

标签: sql sql-server-2005

如果我的数据库中有一个Address1和Address2的列,我如何组合这些列以便我只能在我的select语句中对它执行操作,我仍然将它们分开放在数据库中。我希望能够做到这一点

WHERE completeaddress LIKE '%searchstring%'

其中completedaddress是Address1和Address2的组合。 searchstring就像他们搜索的数据一样。因此,如果他们在Address1中有'123 Center St',在Address2中有'Apt 3B',如果搜索字符串是'Center St 3B',我怎么能选择它?这可以用SQL吗?

5 个答案:

答案 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%'

相关问题