web-dev-qa-db-fra.com

Combinaison SQL de deux colonnes dans l'instruction Select

Si j'ai une colonne Adresse1 et Adresse2 dans ma base de données, comment puis-je combiner ces colonnes afin de pouvoir effectuer des opérations dessus uniquement dans mon instruction de sélection, je les laisserai quand même séparées dans la base de données. J'aimerais pouvoir faire ça

WHERE completeaddress LIKE '%searchstring%'

Où adresse complétée est la combinaison de Adresse1 et Adresse2. searchstring serait comme les données recherchées. Donc, s'ils avaient '123 Center St' dans Address1 et 'Apt 3B' dans Address2, comment l'aurais-je sélectionné si la chaîne de recherche était 'Center St 3B'? Est-ce possible avec SQL?

21
atrljoe

Je pense que c'est ce que vous recherchez -

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

Pour empêcher la création d'un mot composé lorsque nous ajoutons address1 à address2, vous pouvez utiliser ceci - 

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

Ainsi, «123 Center St» et «Apt 3B» ne seront pas «123 Center StApt 3B» mais seront «123 Center St Apt 3B».

39
pavanred

Dans MySQL, vous pouvez utiliser:

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

La fonction SOUNDEX fonctionne de la même manière dans la plupart des systèmes de base de données. Je ne vois pas la syntaxe de MSSQL à la minute, mais ce n’est pas si éloigné de ce qui précède.

8
anothershrubery

Si votre address1 = '123 Center St' et address2 = 'Apt 3B', alors même si vous combinez et faites une LIKE, vous ne pouvez pas rechercher sur la chaîne de recherche en tant que 'Center St 3B'. Cependant, si votre chaîne de recherche était 'Center St Apt', vous pouvez le faire en utilisant -

WHERE (address1 + ' ' + address2) LIKE '%searchstring%'
1
Sachin Shanbhag
SELECT StaffId,(Title+''+FirstName+''+LastName) AS FullName 
FROM StaffInformation

Où écrivez-vous entre parenthèses, cela apparaîtra dans une seule colonne. Où voulez-vous un point au milieu de la syntaxe d'écriture titre et prénom ci-dessous,

SELECT StaffId,(Title+'.'+FirstName+''+LastName) AS FullName 
FROM StaffInformation

Cette syntaxe fonctionne avec MS SQL Server 2008 R2 Express Edition.

1
user3003449