CONCAT (MySQL): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
(uery)
Regel 94: Regel 94:
 
   
 
   
 
  1 - 2 - 3
 
  1 - 2 - 3
 +
 +
== Incorrect column name 'concat'-foutmelding ==
 +
 +
De complete foutmelding, die me in maart 2018 parten speelde:
 +
 +
<pre>
 +
14:47:35 call superquery_prepare_description() Error Code: 1166.
 +
Incorrect column name 'concat (    "<b>Set von zwei xxxxxxxxxxx Yyyyüyyy</b>", 
 +
1,    2,    3  )' 0,0059 sec
 +
</pre>
 +
 +
Oorzaak: De resulterende kolom had geen eigen naam gekregen, en werd zodoende deze uitdrukking, en dat was blijkbaar te gortig voor MySQL.
 +
 +
Oplossing: Voeg <code>as blub</code> oid. toe. Bv.:
 +
 +
<pre>
 +
select
 +
 +
concat
 +
(
 +
"<b>Set von zwei xxxxx Yyyyüyyy</b>",
 +
ifnull(concat(" für ", brands, " Handwerkzeuge"), " für Handwerkzeuge"),
 +
ifnull(concat(" - Abmessungen: ",dim1,"x",dim2,"x",dim3,"mm"),""),
 +
ifnull(concat(" - Ersatz für diese Original-abc: ",orgbrush_tmp5.orgbrush_id),""),
 +
if(automatic_stop=0, ""," - Mit automatischer Abschaltung")   
 +
)
 +
as basis        # DEZE REGEL MAAKT HET VERSCHIL
 +
from root_tmp
 +
</pre>

Versie van 13 mrt 2018 15:54

Voorbeeld

concat(
   Dim1NL,
   "x",
   Dim2NL,
   "x",
   Dim3NL,
   "mm"
)

Syntaxis - In scripts

Bij sommige commando's moet het openingshaakje direct achter het keywoord staan. Dat is hier niet het geval - Dit werkt:

select 
concat
(
   1,
   2,
   3
)
as blub;

Commentaarregels zijn ook geen probleem:

select concat
(
    # Nu komt het eerste argument
    #############################
    #
    1,
    
    # Nu komt het tweede argument
    #############################
    #
    2,
    
    # Nu komt het derde argument
    ############################
    #
    3
) as blub;

Syntaxis - In sprocs

Syntaxis lijkt voor sprocs niet anders te zijn:

CREATE DEFINER=`root`@`localhost` PROCEDURE `concat_test`()
BEGIN

select concat (1,2,3) as blub_01;

select concat 
(
    4,
    5,
    6
) 
as blub_02;

select concat 
(
    # Eerste argument
    #################
    #
    7,
    # Tweede argument
    #################
    #
    8,
    # Derde argument
    ################
    #
    9
) 
as blub_03;

END

concat_ws

ws staat voor with separator. Bv.:

select concat_ws(" - ",1,2,3)

1 - 2 - 3

Incorrect column name 'concat'-foutmelding

De complete foutmelding, die me in maart 2018 parten speelde:

14:47:35	call superquery_prepare_description()	Error Code: 1166. 
Incorrect column name 'concat (     "<b>Set von zwei xxxxxxxxxxx Yyyyüyyy</b>",  
1,     2,     3  )'	0,0059 sec

Oorzaak: De resulterende kolom had geen eigen naam gekregen, en werd zodoende deze uitdrukking, en dat was blijkbaar te gortig voor MySQL.

Oplossing: Voeg as blub oid. toe. Bv.:

select 

concat
(
	"<b>Set von zwei xxxxx Yyyyüyyy</b>",
	ifnull(concat(" für ", brands, " Handwerkzeuge"), " für Handwerkzeuge"),
	ifnull(concat(" - Abmessungen: ",dim1,"x",dim2,"x",dim3,"mm"),""),
	ifnull(concat(" - Ersatz für diese Original-abc: ",orgbrush_tmp5.orgbrush_id),""),
	if(automatic_stop=0, ""," - Mit automatischer Abschaltung")    
)
as basis         # DEZE REGEL MAAKT HET VERSCHIL
from root_tmp