SQL объединяет два столбца в операторе выбора - PullRequest
23 голосов
/ 09 марта 2011

Если в моей базе данных есть столбец Address1 и Address2, как мне объединить эти столбцы, чтобы я мог выполнять над ними операции только в своем операторе select, я все равно оставлю их отдельно в базе данных.Я хотел бы иметь возможность сделать это

WHERE completeaddress LIKE '%searchstring%'

Где завершенный адрес является комбинацией адреса1 и адреса2.Строка поиска будет похожа на данные, которые они искали.Таким образом, если бы они имели «123 Center St» в Address1 и «Apt 3B» в Address2, как бы я выбрал его, если строка поиска была «Center St 3B». Возможно ли это с SQL?

Ответы [ 5 ]

40 голосов
/ 09 марта 2011

Я думаю, это то, что вы ищете -

select Address1+Address2 as CompleteAddress from YourTable
where Address1+Address2 like '%YourSearchString%'

Чтобы предотвратить создание составного слова, когда мы добавляем адрес1 к адресу2, вы можете использовать это -

select Address1 + ' ' + Address2 as CompleteAddress from YourTable 
where Address1 + ' ' + Address2 like '%YourSearchString%'

Таким образом, «123 Center St» и «Apt 3B» не будут «123 Centre StApt 3B», а будут «123 Centre St Apt 3B».

8 голосов
/ 09 марта 2011

В MySQL вы можете использовать:

SELECT CONCAT(Address1, " ", Address2)
WHERE SOUNDEX(CONCAT(Address1, " ", Address2)) = SOUNDEX("Center St 3B")

Функция SOUNDEX работает аналогично в большинстве систем баз данных, я не могу думать о синтаксисе для MSSQL в данный момент, но это не будетслишком далеко от вышесказанного.

1 голос
/ 18 ноября 2013
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.

1 голос
/ 09 марта 2011

Если ваши address1 = '123 Center St' и address2 = 'Apt 3B', то даже если вы объедините и сделаете LIKE, вы не сможете искать в строке поиска как 'Center St 3B'. Однако, если ваша строка поиска была 'Center St Apt', то вы можете сделать это, используя -

WHERE (address1 + ' ' + address2) LIKE '%searchstring%'
0 голосов
/ 09 марта 2011

Если вы не хотите изменять схему базы данных (а я бы не стал использовать этот простой запрос), вы можете просто объединить их в фильтре следующим образом: WHERE (Address1 + Address2) LIKE '%searchstring%'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...