Ich habe eine Tabelle mit einer Spalte mit Daten, die auch mit Zahlen beginnen, auf MySQLWählen Sie Werte, die mit einer Zahl beginnen
Wie kann ich die Zeilen auswählen, die nur mit einer Zahl beginnen?
Ich habe eine Tabelle mit einer Spalte mit Daten, die auch mit Zahlen beginnen, auf MySQLWählen Sie Werte, die mit einer Zahl beginnen
Wie kann ich die Zeilen auswählen, die nur mit einer Zahl beginnen?
SELECT * FROM YourTable WHERE YourColumn regexp '^[0-9]+'
+1 für 'REGEXP' (ich glaube nicht,' LIKE' unterstützt RegEx (wie @RedFilter) impliziert hat). Allerdings würde ich wahrscheinlich ''^ [0-9] +' 'als ein Muster selbst verwenden. –
'%' funktioniert nicht mit regexp. Es funktioniert mit Gleichem. – codaddict
@Brad: Guter Punkt für den regulären Ausdruck, ich werde aktualisieren :) – Sarfraz
können Sie tun:
SELECT *
FROM MyTable
WHERE MyColumn REGEXP '^[0-9]';
Der reguläre verwendete Ausdruck ist ^[0-9]
.
^ - Start anchor, used to ensure the pattern matches start of the string.
[ - Start of character class.
0-9 - Any digit
] - End of character class
effektiv versuchen wir diese Werte in der Spalte, die beginnen mit einer Ziffer auszuwählen.
Demo:
mysql> select * from tab;
+-------+
| col |
+-------+
| 1foo |
| foo |
| 10foo |
| foo10 |
+-------+
4 rows in set (0.00 sec)
mysql> select * from tab where col regexp '^[0-9]';
+-------+
| col |
+-------+
| 1foo |
| 10foo |
+-------+
2 rows in set (0.00 sec)
auch
SELECT * FROM YourTable
WHERE YourColumn LIKE '[0-9]%';
'SELECT * FROM \' Künstler \ 'WHERE \' Artist \ 'LIKE '[0-9]%'' leer verwenden. – akinuri
MySQLs "Like" unterstützt solche Muster nicht. Sie müssen 'regexp' dafür verwenden. Beispiel: 'SELECT * FROM foo WHERE bar REGEXP '^ [0-9]''. https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html –
Noch eine andere Art und Weise:
WHERE LEFT(columnName,1) IN ('0','1','2','3','4','5','6','7','8','9')
und mit gemeinsamen charsets und Sortierungen, das funktionieren würde und einen Index für die Spalte verwenden:
WHERE columnName >= '0' AND columnName < ':'
SELECT * FROM TABLE T
WHERE T.COLUMNNAME REGEXP '^[0-9]';
Eine andere Antwort ist:
SELECT * FROM TABLE T
WHERE T.COLUMNNAME RLIKE '^[0-9]';
"' RLIKE ist ein Synonym für REGEXP' " –
gleiche allgemeine Stimmung wie diesen Thread, wie man [Detect, wenn der Wert Zahl in MySQL ist] (https://stackoverflow.com/q/5064977/1366033), aber nur auf den ersten char – KyleMit