Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

MySQL concat

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
ik gebruik de volgende query in mysql:

SELECT concat("<KING_JOURNAAL>",'\r\n'
,"<JP_BOEKDATUM>",`ID`) as xml_cvk
FROM `tbldag`

Als resultaat krijg ik een een lange reeks willekeurige cijfers en letters. :'(

Als ik de verwijzing naar de kolom ID weghaal werkt de query wel goed.

Hoe dit op te lossen ?

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Zou je in plaats van " niet ' gebruiken? Je hebt dus string, string, string en dan een waarde uit je database?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Waarom laat je je database de presentatie regelen? :?

Doe je dit in een MySQL-omgeving of via PHP of een andere taal? Welk datatype heeft je ID-veld? Wat bedoel je precies met willekeurig? Hex? Totaal random? Speciale tekens of krijg je echt alleen alfanumeriek spul?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Merethil
  • Registratie: December 2008
  • Laatst online: 14:30
Eventueel als er cijfers tussen zitten, volgens de docu van MySQL:
" A numeric argument is converted to its equivalent binary string form "

http://dev.mysql.com/doc/...ions.html#function_concat
Check even alles wat ze erbij zeggen want er zitten best een hoop haken en ogen aan de functie, waarschijnlijk kan je dit beter doen wanneer je de data al uit de DB hebt gevist.

Verwijderd

Topicstarter
Dit is de waarde die wordt weergegeven:
3c4b494e475f4a4f55524e41414c3e0d0a3c4a505f424f454b444154554d3e35

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

En als je zoals de documentatie die Merethil linkt al zegt eens netjes je ID cast naar een varchar?

[ Voor 4% gewijzigd door NMe op 24-04-2014 14:18 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Merethil
  • Registratie: December 2008
  • Laatst online: 14:30
Verwijderd schreef op donderdag 24 april 2014 @ 13:47:
Dit is de waarde die wordt weergegeven:
3c4b494e475f4a4f55524e41414c3e0d0a3c4a505f424f454b444154554d3e35
Kun je je concat functie herschrijven door de tabelnamen te veranderen naar de invoer die jij denkt dat hij doorgeeft?

Zoiets:

MySQL:
1
2
3
SELECT concat("SOMEVALUE",'\r\n'
,"24-09-2013",`SOMEOTHERVALUE`) as xml_cvk 
FROM `tbldag`


Op die manier kan je al direct zien dat bijvoorbeeld 24-09-2013 niet zomaar kan worden omgezet.

Verwijderd

Topicstarter
Als ik `SOMEOTHERVALUE` vervang door `ID` krijg ik nog steeds dezelfde foutmelding

  • Merethil
  • Registratie: December 2008
  • Laatst online: 14:30
Verwijderd schreef op donderdag 24 april 2014 @ 13:55:
Als ik `SOMEOTHERVALUE` vervang door `ID` krijg ik nog steeds dezelfde foutmelding
...Dat bedoelde ik niet. Ik bedoelde dus, geef eens een voorbeeld van de variabelen die je probeert te concatenaten.
Ik heb dus wat values ingevuld in plaats van je kolomnamen, doe hetzelfde eens met de data die jij probeert te gebruiken en schrijf dat hier neer.

Verwijderd

Topicstarter
Als ik de volgende query gebruik werkt het wel. Het veld ID is een nummer.

SELECT concat("SOMEVALUE",'\r\n'
,"24-09-2013",'1') as xml_cvk
FROM `tbldag`

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 24 april 2014 @ 13:55:
Als ik `SOMEOTHERVALUE` vervang door `ID` krijg ik nog steeds dezelfde foutmelding
Welke foutmelding? Je noemt nergens een foutmelding, alleen een "rare" 256-bit hashcode.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
ik krijg overigens geen foutmelding. de query wordt gewoon uitgevoerd. alleen de uitkomst is die lange code.....

  • Merethil
  • Registratie: December 2008
  • Laatst online: 14:30
Verwijderd schreef op donderdag 24 april 2014 @ 14:08:
Als ik de volgende query gebruik werkt het wel. Het veld ID is een nummer.

SELECT concat("SOMEVALUE",'\r\n'
,"24-09-2013",'1') as xml_cvk
FROM `tbldag`
Merethil schreef op donderdag 24 april 2014 @ 13:43:
" A numeric argument is converted to its equivalent binary string form "
NMe schreef op donderdag 24 april 2014 @ 13:49:
En als je zoals de documentatie die Merethil linkt eens netjes je ID cast naar een varchar?
Volgens mij is het duidelijk, toch?

Verwijderd

Topicstarter
sorry hoor maar het is mij nog niet duidelijk hoe dit op te lossen

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 17:52

The Eagle

I wear my sunglasses at night

Als dat SOMEVALUE veld een number is, moet je dus eerst typecasting doen :)
Dus iets als
SELECT to_char(somevalue) from table

Maar werkt het volgende niet per ongeluk:

SQL:
1
2
Select to_char('<',||somevalue || '><' || JP_BOEKDATUM || '><' || ID || '>' ) as xml_cvk 
FROM tbldag;

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

NMe schreef op donderdag 24 april 2014 @ 14:08:
[...]

Welke foutmelding? Je noemt nergens een foutmelding, alleen een "rare" 256-bit hashcode.
geen hash:
hex2ascii('3c4b494e475f4a4f55524e41414c3e0d0a3c4a505f424f454b444154554d3e35') = ''<KING_JOURNAAL>\n<JP_BOEKDATUM>5"

http://xyproblem.info/


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 21-11 21:44
Misschien helpt dit je verder:
http://jondowdle.com/mysql-concat-and-mixed-types/

Waar het op neer komt: strings (letters) en nummers tegelijk in een concat() mieteren is niet zo'n goed idee. Dan moet je eerst de nummers omzetten in een string (dus 11 wordt dan "11").

[ Voor 53% gewijzigd door Morrar op 24-04-2014 14:36 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 24 april 2014 @ 14:22:
sorry hoor maar het is mij nog niet duidelijk hoe dit op te lossen
Het staat gewoon letterlijk in die post: cast alle niet-(var)charvelden die je aan elkaar wil plakken naar char. Het staat zelfs voorgedaan in de documentatie die hierboven gelinkt wordt. Wat snap je daar niet aan?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Bedankt voor de hulp. Met de funcite CHAR() is het gelukt

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Dan rest nog de vraag; waarom doe je dit niet in je presentatie laag (wellicht php)?

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Dit is fout op enorm veel niveau's. Ik heb meerdere malen meegemaakt dat mensen zelf "XML" aan elkaar gingen prutsen wat natuurlijk faliekant fout gaat met alle speciale karakters die geescaped moeten worden. Doe dit niet, gebruik gewoon een bestaande XML library in je programmalaag en zorg ervoor dat je niet binnenkort een pissige collega een je bureau hebt staan.

https://niels.nu


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Niet om af te doen aan je boodschap (want daar ben ik het helemaal mee eens) maar het ziet er niet uit als XML. Tenzij het ofwel malformed XML is, ofwel half in SQL en half in code wordt opgebouwd, en dat is zo mogelijk nog fouter.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
NMe schreef op donderdag 24 april 2014 @ 21:01:
maar het ziet er niet uit als XML
De as xml_cvk geeft 't aardig weg ;)

En inderdaad kun je het niet veel fouter krijgen. Wegblijven en afblijven totdat je weet waar je mee bezig bent.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
RobIII schreef op donderdag 24 april 2014 @ 21:15:
[...]

De as xml_cvk geeft 't aardig weg ;)
Idd.

https://niels.nu


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

RobIII schreef op donderdag 24 april 2014 @ 21:15:
[...]

De as xml_cvk geeft 't aardig weg ;)
Dan blijft het feit dat 't malformed is staan. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
NMe schreef op donderdag 24 april 2014 @ 23:19:
[...]

Dan blijft het feit dat 't malformed is staan. ;)
Of TS heeft de rest achterwege gelaten ;)

SELECT concat("<KING_JOURNAAL>",'\r\n'
,"<JP_BOEKDATUM>",`ID`,"</JP_BOEKDATUM>",'\r\n',
"</KING_JOURNAAL>"
) as xml_cvk

(even doorgegaan op dezelfde, ont-zet-tend vaute, fiets :Y))

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Nope, want:
DanielG schreef op donderdag 24 april 2014 @ 14:31:
[...]

geen hash:
hex2ascii('3c4b494e475f4a4f55524e41414c3e0d0a3c4a505f424f454b444154554d3e35') = ''<KING_JOURNAAL>\n<JP_BOEKDATUM>5"
:P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Als ik over een tijdje weer met rare API's moet werken die <KING_JOURNAAL> in de XML uitspugen, dan weet ik in ieder geval wie ik dan aan z'n lurven moet grijpen :+
Pagina: 1