i.p.v. ISNUMMERIC, specifiek op alphanummernic = 5 + ISnummeric = 3
In dummy4 heb ik de volgende waarde staan, “ KEUZE123 “
Hoe kan ik i.p.v. ISNUMMERIC, specifiek op alphanummernic = 5 + ISnummeric = 3 doen.
De waarde is altijd eerst karakters aansluitend door nummers.
select u.dummy4, U.NAME, u2.dummy4, U2.NAME
from tb_Users u inner join tb_Users_Ext e on e.id_user=u.id_user
inner join tb_Users u2 on u2.dummy4=u.dummy4 and u.id_user < u2.id_user
where e.ExtID is not null and u.status in (1)
and u.Dummy4 is not null and ISNUMERIC(u.dummy4) = 1 and len(u. dummy4)=8 and u2.status in (1)
and u.dummy4 in (select dummy4 from tb_users group by dummy4 having count(dummy4)> 1)
REGEXP operator, dus dan
^ = begin (voorkomt dat "whateverKEUZE123" ook een match is)
[A-Z]{5} = 5 karakters A t/m Z
[0-9]{3} = 3 karakters 0 t/m 9
$ = einde (voorkomt dat "KEUZE123whatever" ook een match is)
MySQL kent de ^ = begin (voorkomt dat "whateverKEUZE123" ook een match is)
[A-Z]{5} = 5 karakters A t/m Z
[0-9]{3} = 3 karakters 0 t/m 9
$ = einde (voorkomt dat "KEUZE123whatever" ook een match is)
Op het moment dat je patroon hoort kun je denken aan een reguliere expressie.
Dit is wel weer een voorbeeld van informatie die versleuteld in je database zit, je moet ook weer een (hoop) moeite doen om deze er uit te peuteren en dat zou je moeten vermijden.
bedankt voor je snelle reactie, helaas krijg ik een fout melding.
kan je me vertellen hoe ik dit fix en wat de reden is.
Msg 4145, Level 15, State 1, Line 5
An expression of non-boolean type specified in a context where a condition is expected, near 'regexp'.
select u.dummy4, U.NAME, u2.dummy4, U2.NAME
from tb_Users u inner join tb_Users_Ext e on e.id_user=u.id_user
inner join tb_Users u2 on u2.dummy4=u.dummy4 and u.id_user < u2.id_user
where e.ExtID is not null and u.status in (1)
and u.Dummy4 is not null and u.dummy4 regexp '^[A-Z]{5}[0-9]{3}$' and len(u. dummy4)=8 and u2.status in (1)
and u.dummy4 in (select dummy4 from tb_users group by dummy4 having count(dummy4)> 1)
REGEXP hoort in een conditie, zoals bijv. een WHERE.
Aan de foutmelding te zien MS SQL Server. Daar is de LIKE syntax wat uitgebreider en kun je (blijkbaar):
Als het werkt kun je die len(u.dummy4)=8 overigens wel weg laten, want dat wordt ook al door de regex/like gecontroleerd.
Gewijzigd op 20/08/2019 22:56:31 door Rob Doemaarwat
Heren, ik gebruik MSSQLserver 2014
Ja werkt, weer wat bij geleerd, super bedankt
Maurice Oost op 20/08/2019 23:00:26:
weer wat bij geleerd
Ik ook: dat je blokhaken moet escapen voor MS SQL ...