2015-09-11 14 views
8

Ich habe eine Spalte, die Zahlen und anderen String-Wert enthält (wie „?“, „???“, etc.)Wie kann man überprüfen, ob ein Wert eine Zahl in SQLite ist

Ist es möglich, ein hinzufügen Ist die Bedingung "is number" für die Where-Klausel in SQLite? Etwas wie:

select * from mytable where isnumber(mycolumn) 
+0

Verwenden ein regulärer Ausdruck. sqllite unterstützt diese entsprechend. http://stackoverflow.com/questions/5071601/how-doi-i-use-regex-in-a-sqlite-query –

+0

Sind diese Zahlen tatsächliche Zahlen oder Strings, die eine Zahl enthalten? –

Antwort

9

Vom documentation,

Die typeof (X) Funktion gibt eine Zeichenfolge, die den Datentyp des Ausdrucks X angibt: "null", "integer", "real", "Text" oder "Blob".

können Sie verwenden where typeof(mycolumn) = "integer"

2

Sie so etwas wie dies auch versuchen könnte:

select * from mytable where printf("%d", field1) = field1; 

Wenn Ihr Spaltentext und enthält numerische und String, könnte dies etwas nützlich sein Integer-Daten zu extrahieren .

Beispiel:

CREATE TABLE mytable (field1 text); 
insert into mytable values (1); 
insert into mytable values ('a'); 

select * from mytable where printf("%d", field1) = field1; 
field1 
---------- 
1 
0
SELECT * 
FROM mytable 
WHERE columnNumeric GLOB '*[0-9]*' 
Verwandte Themen