Toon posts:

[SQL] Convert - str - Len in 1 update

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Vraagje

ik ben een MS Access programmatje aan het ombouwen naar een SQL versie met vb.net

nu heb ik in access een query staan die het volgende doet.

3Test + 15 - de lengte van in dit geval "3Test" en de rest opvullen met "0" (hieronder een stukje)

code:
1
'3Test' & Format(Colli_Nr,String(15-Len('3Test'),'0'))


als ik dit omzet naar sql:
code:
1
'3Test' & Convert(Colli_Nr,Str(15-Len('3Test'),'0'))


Nu krijg ik onderstaande foutmelding:
Msg 8116, Level 16, State 1, Line 1
Argument data type varchar is invalid for argument 2 of str function.


Ik heb geen idee waarom dit fout gaat.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 25 maart 2009 @ 10:19:
Ik heb geen idee waarom dit fout gaat.
Grappig, want dat wordt je toch echt verteld:
Verwijderd schreef op woensdag 25 maart 2009 @ 10:19:
Msg 8116, Level 16, State 1, Line 1
Argument data type varchar is invalid for argument 2 of str function.
Al eens in de help gekeken?

SQL:
1
select Left('3test' + replicate('0',15),15)

[ Voor 6% gewijzigd door RobIII op 25-03-2009 10:30 ]

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


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

ja, varchar is een tekstuele 0. ik denk dat hij een int 0 verwacht dus zonder de '.

Edit:

code:
1
'3Test' & Convert(Colli_Nr,Str(15-Len('3Test'),0))

[ Voor 32% gewijzigd door Matis op 25-03-2009 10:30 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Omdat de STR functie in SQL iets anders doet dan de String functie in Access.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Ach... laat ik het verschil maar even uitleggen ook:

String(number, character): maakt een string waarbij character number maal herhaalt wordt. Dus String(5, '0') zorgt voor de string '00000'.

STR(float, length, decimal): maakt een string representatie van float met lengte length en decimal decimalen, waarbij de float wordt afgerond. Eventueel worden leading spaces toegevoegd om aan length te komen. Dus STR(3.4567890, 5, 1) zorgt voor de string ' 3.5' en STR(3.4567890, 5, 4) zorgt voor de string '3.457'.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op woensdag 25 maart 2009 @ 10:28:
[...]

Grappig, want dat wordt je toch echt verteld:

[...]

Al eens in de help gekeken?

SQL:
1
select Left('3test' + replicate('0',15),15)
Ja, ik had in de Help gekeken, maar je had wel gelijk.

SQL:
1
LEFT('3test' + REPLICATE('0', 15), 15) 
is wel de oplossing
Pagina: 1