Formes intel·ligents d’utilitzar una cadena de concatenació SQL

Formes intel·ligents d’utilitzar una cadena de concatenació SQL

Llenguatge de consulta estructurat (SQL) és una eina extraordinàriament potent i plena de funcions. Un cop hàgiu dominat el màxim ordres SQL importants , podeu començar a ser una mica més creatiu amb el vostre SQL. Avui us mostraré tot el que heu de saber sobre les cadenes de concatenació SQL.





Hi ha molts dialectes SQL diferents. Per a tots aquests exemples, estic fent servir el fitxer PostgreSQL variant.





com obtenir un fons transparent

Què és la concatenació?

La concatenació significa unir dues coses. Potser l’heu utilitzat en un llenguatge de programació per unir dues cadenes. Potser teniu variables de nom i cognom que heu unit com a variable de nom complet.





La concatenació és una manera molt útil de combinar dues cadenes en una. PHP utilitza un punt per unir cadenes, mentre que JavaScript i jQuery utilitzen un signe més.

La concatenació a SQL funciona exactament igual. Utilitzeu un operador especial per unir dues coses en una sola. Aquí hi ha un exemple a Pseudocodi :



first_name = Joe
last_name = Coburn
whole_name = first_name + last_name

En els llenguatges de programació, la concatenació facilita la lectura del codi. Si el vostre codi sempre ha d’accedir a dues cadenes, combinar-les en una simplifica la memòria i redueix la longitud del codi.

Tot i que les variables a SQL són menys comunes (però encara s’utilitzen), encara es necessita la concatenació per retornar resultats combinats o per manipular dades.





Com concatenar

La concatenació és molt fàcil a SQL. Tot i que SQL és un llenguatge comú, els motors de base de dades individuals implementen funcions de diferents maneres. Tot i que tots aquests exemples es troben al dialecte PostgreSQL, és fàcil traduir-lo a altres variants simplement cercant a la web 'Concatenar'. Els motors diferents poden tenir una sintaxi diferent per a la concatenació, però el principi continua sent el mateix.

Tornant al nostre exemple de nom, aquí teniu una informació bàsica seleccioneu consulta:





SELECT first_name, last_name, email FROM users_table

Aquí no hi ha res de complex, així que afegim el concatenat:

SELECT first_name || last_name AS full_name, email FROM users_table

Com podeu veure, aquesta concatenació ha funcionat perfectament, però hi ha un petit problema. El nom complet resultant s’ha combinat exactament com el producte de les dues columnes; hi hauria d’haver un espai entre els noms.

Afortunadament, és fàcil de corregir: simplement concateu un espai entre els dos:

SELECT first_name || ' ' || last_name AS full_name, email FROM users_table

Aquests són exemples bàsics, però hauríeu de veure com funciona la concatenació: és molt fàcil. L'operador de canonades ( | ) s’utilitza dues vegades entre clàusules. El vostre motor SQL sap que cada part abans i després d’aquest símbol s’hauria d’ajuntar i tractar com una sola cosa. Aneu amb compte, però, si utilitzeu l’operador concat però no concateneu res, obtindreu un error.

Com es va esmentar anteriorment, aquests exemples utilitzen la variant PostgreSQL de SQL. Altres variants poden utilitzar un operador diferent, o fins i tot una funció especial a la qual haureu de trucar. Realment no importa com concateneu cadenes, sempre que ho feu tal com espera el vostre motor de base de dades.

Aprofundint

Ara que ja coneixeu els conceptes bàsics, vegem alguns exemples en profunditat, juntament amb algunes trampes habituals.

La majoria dels motors de bases de dades concatenaran amb èxit una barreja de cadenes i enters, potser fins i tot dates. Normalment, tindreu problemes quan intenteu concatenar tipus complexos, com ara matrius:

SELECT first_name || ' ' || last_name || ARRAY[123, 456] AS full_name, email FROM users_table

Aquest codi no funcionarà. No és possible combinar cadenes amb objectes complexos com ara matrius. Si penseu en el que heu de fer, sovint podeu escriure un codi senzill que funcioni, en lloc d’un codi complex i boig que no s’executa.

Si heu pensat detingudament què heu de fer i encara no podeu fer funcionar l'SQL, heu pensat a utilitzar un llenguatge de programació? Com a desenvolupador de programari que treballa en el codi heretat, sé el dolor d’intentar depurar SQL en què algú ha amuntegat tanta lògica, ja que és una meravella: si intenteu escriure lògica en SQL, canvieu a llenguatge de programació (hi ha molts llenguatges fàcils d’aprendre).

La concatenació funciona molt bé per a on declaracions també:

SELECT first_name, last_name, email FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'MONTH' || '/' || 'YEAR')::date

Aquí hi ha algunes coses que passen. En aquest exemple, DIA , MES , i CURS són paràmetres que s'han passat des d'un script. Potser han estat generats per codi o introduïts per un usuari. Aquests es concatenen junts i després es converteixen en un tipus de data (mitjançant la sintaxi de cast fins a data de PostgreSQL ::data ).

Utilitzar la concatenació d'aquesta manera us permet encadenar les parts individuals d'una data, que després es pot processar com una data 'real', en lloc d'una cadena. No oblideu que aquest exemple bàsic no protegeix contra la injecció SQL, així que no el feu servir en cap codi de producció sense modificar-lo.

Una altra trampa a tenir en compte és nul valors (una cadena nul·la és una cadena buida o inexistent). Atesa aquesta consulta:

SELECT first_name || ' ' || NULL AS full_name, email FROM users_table

Aquesta consulta falla en silenci. Això es deu a la forma en què la concatenació es codifica internament al vostre motor de base de dades. És possible que no sempre trobeu aquest problema, però és un fet força comú.

Si creieu que les dades que retorna la vostra consulta poden ser nul·les, haureu d'utilitzar un fitxer unir-se . Aproximadament, es pot pensar que la unió és 'si això és nul, substituïu-lo per aquesta altra cadena o columna':

SELECT first_name || ' ' || COALESCE(NULL, 'ERROR NULL DATA') AS full_name, email FROM users_table

Ara ja sabeu utilitzar la concatenació a SQL, què hi fareu? Faràs fer un lloc web i animar-lo amb SQL? O potser necessiteu un generador de llocs estàtics per a un enfocament més senzill de creació de llocs web.

Feu el que feu, feu-nos-ho saber als comentaris següents.

com es comparteix el joc Xbox One
Compartir Compartir Tweet Correu electrònic 6 alternatives audibles: les millors aplicacions gratuïtes o econòmiques de audiollibres

Si no us ve de gust pagar audiollibres, aquí teniu algunes aplicacions fantàstiques que us permeten escoltar-les de forma gratuïta i legal.

Llegiu a continuació
Temes relacionats
  • Programació
  • Programació
  • SQL
Sobre l'autor Joe Coburn(136 articles publicats)

Joe és llicenciat en Informàtica per la Universitat de Lincoln, Regne Unit. És un desenvolupador de programari professional i, quan no fa volar drons ni escriu música, sovint se’l pot trobar fent fotos o produint vídeos.

Més de Joe Coburn

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us