MySQL: Wie um zu überprüfen, ob eine angebotene Wert ist eine Zahl/ ganze Zahl oder Buchstaben?
Wie kann ich überprüfen, ob eine angebotene Wert ist eine Zahl/ganze Zahl oder Buchstaben?
Zum Beispiel, das ist meine funktionierende SQL,
SELECT
p.*
FROM page AS p
WHERE p.title = 'home'
AND IF(CONVERT('7', SIGNED INTEGER) IS NOT NULL, p.parent_id != p.page_id, p.parent_id = p.page_id)
'7' ist variabel, manchmal ist es eine Zahl, manchmal ist es 'selbst'.
So, wenn es eine Zahl ist, dann p.parent_id != p.page_id
Sonst p.parent_id = p.page_id
Aber ich kann es richtig machen, da meine SQL-Abfrage gibt immer p.parent_id != p.page_id
.
- Wenn die variable nicht numerisch ist, ist es immer
'self'
? Wenn dem so ist, können Sie nicht einfach umkehren, Ihr denken und prüfenIF(var = 'self', ...
? - ja, ich glaube, ich könnte das auch tun! danke für die Tipps!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine
REGEXP
.Den Grund Ihrer
CONVERT()
funktioniert nicht wie erwartet ist, dass eine nicht-numerische Zeichenfolge wird immer gegossen werden als 0, sondern als NULL.Ihre Methode kann funktionieren, wenn Sie vergleichen gegen 0 anstelle von NULL, aber ich habe nicht ein guter Weg, um zu testen. Dies schlägt jedoch fehl, wenn der Wert tatsächlich 0 ist, wobei Sie den falschen Vergleich zurück.
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
oder mehr optimale
vorausgesetzt impliziten cast
1
zuTRUE
und0
zuFALSE
von mysql.SELECT '7abcd' REGEXP '[[:digit:]]+'
zurück1
. Sie müssen Ihre Anker regex.