[MSSQL|Delphi] Concatenate velden

Pagina: 1
Acties:

  • Darkvater
  • Registratie: Januari 2001
  • Laatst online: 26-08-2024

Darkvater

oh really?

Topicstarter
Ik heb in een tabel een Naam en een Voorletter colom. Nu wil ik dus graag een select doen zodat ik "NaamVoorletter" te zien krijg. Beide velden zijn text.

Het zou gewoon zo moeten werken:
code:
1
SELECT Naam + Voorletter as Name FROM....

Ten eerste werkt dit niet, want ik krijg alleen "Naam" te zien en geen "Voorletter" en als "Voorletter" leeg is, krijg ik helemaal niks te zien.
Met '&' ipv '+' krijg ik de error: "Invalid operator for data type. Operator equals boolean AND, type equals char".
Met '||' krijg ik: "Incorrect syntax near '|'".

Echt vreemd. Ook als ik NaamAAA ofzo wil, dan krijg ik 'AAA' niet te zien (Naam+'AAA'), maar AAANaam werkt gewoon wel ('AAA'+Naam). Wat moet ik nou als SQL query invoeren zodat het wel werkt? Ik heb me al rotgezocht naar CONCAT/COALASCE etc, maar geen een werkte.


Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Darkvater schreef op 06 januari 2004 @ 14:16:
Ik heb in een tabel een Naam en een Voorletter colom. Nu wil ik dus graag een select doen zodat ik "NaamVoorletter" te zien krijg. Beide velden zijn text.

Het zou gewoon zo moeten werken:
code:
1
SELECT Naam + Voorletter as Name FROM....

Ten eerste werkt dit niet, want ik krijg alleen "Naam" te zien en geen "Voorletter" .
Heel vreemd, je syntax is wel goed. Wat gebeurt er als je SELECT LTRIM(RTRIM(Naam)) + LTRIM(RTRIM(Voorletter)) doet?

Het feit dat je helemaal niets ziet als voorletter NULL is komt van de setting

SET CONCAT_NULL_YIELDS_NULL ON | OFF

die moet je op OFF zetten.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

code:
1
 SELECT CONVERT(varchar(GewensteLengte), Naam + Voorletter) as Name FROM ...


Wat geeft dit?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je velden zijn TEXT?

Waarom? Waarom niet gewoon VARCHAR of NVARCHAR ?

(N)VARCHAR velden kan je concatten. Text is echter een speciaal soort veld, voor grote lappen text. Die kan je niet concatten, en je kan er ook geen index op leggen.

[ Voor 54% gewijzigd door whoami op 06-01-2004 14:33 ]

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
* P_de_B was afgeleid door de error (field equals char) 8)7

concatten op een TEXT veld wil dus inderdaad niet.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Darkvater
  • Registratie: Januari 2001
  • Laatst online: 26-08-2024

Darkvater

oh really?

Topicstarter
code:
1
SELECT LTRIM(RTRIM(Naam)) + LTRIM(RTRIM(Voorletter))

Dit werkt erg goed, moet wel die dus op OFF zetten.

code:
1
SELECT CONVERT(varchar(GewensteLengte), Naam + Voorletter) as Name FROM ...

Dit geeft alleen maar het eerste weer, Naam dus.

Waarom de velden Text zijn, weet ik ook niet, ik heb de database niet gemaakt :)
In ieder geval zeer bedankt P_de_B voor je hulp :D

Maar als ik dus vraag of ze de TEXT velden om willen zetten in (N)VARCHAR, dan zou die '+' gewoon werken? Ff kijken of ze daar in gaan :)

[ Voor 16% gewijzigd door Darkvater op 06-01-2004 14:46 ]


Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Darkvater schreef op 06 januari 2004 @ 14:44:
code:
1
SELECT LTRIM(RTRIM(Naam)) + LTRIM(RTRIM(Voorletter))

Dit werkt erg goed, moet wel die dus op OFF zetten.
Dit komt denk ik omdat de TRIM een implicite cast naar VARCHAR doet
Maar als ik dus vraag of ze de TEXT velden om willen zetten in (N)VARCHAR, dan zou die '+' gewoon werken? Ff kijken of ze daar in gaan :)
Ze zullen wel moeten :)
TEXT gebruik je alleen voor velden waarin meer dan 8000 karakters moeten. Er zijn veel problemen en eigenaardigheden met TEXT velden, je kunt ze dus beter niet gebruiken als het niet absoluut noodzakelijk is.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
P_de_B schreef op 06 januari 2004 @ 15:08:
[...]


Dit komt denk ik omdat de TRIM een implicite cast naar VARCHAR doet
My thoughts exactly.
Ze zullen wel moeten :)
TEXT gebruik je alleen voor velden waarin meer dan 8000 karakters moeten. Er zijn veel problemen en eigenaardigheden met TEXT velden, je kunt ze dus beter niet gebruiken als het niet absoluut noodzakelijk is.
Daarnaast is een TEXT veld niet echt handig als je er moet gaan in zoeken of op sorteren.

https://fgheysels.github.io/

Pagina: 1