Справка по SQL-запросам! Я пытаюсь выбрать строку, которая не начинается с числа - PullRequest
3 голосов
/ 16 ноября 2010

В моей таблице 10 001 строка, и все строки, кроме одной, начинаются с цифры. Мне нужно найти эту строку, которая не начинается с цифры или даже не содержит числа.

Итак, вот что у меня есть:

Select col1 from table1 where col1 not like '?%'

Это даже близко? Мне нужно найти строку, в которой нет номера ...

Спасибо !!

ОБНОВЛЕНИЕ: я использую базу данных sqlite

Ответы [ 5 ]

5 голосов
/ 16 ноября 2010

Использование:

SELECT col1
  FROM table1 
 WHERE SUBSTR(col1, 1, 1) NOT BETWEEN 0 AND 9

Справка:

3 голосов
/ 16 ноября 2010

На сервере Sql,

Select * From table
Where col1 Like '[^0-9]%'

РЕДАКТИРОВАТЬ: Не знаю, есть ли эквивалент на SQLLIte,

но это будет работать ...

Select * From table
Where col1 Not Like '0%' 
   And col1 Not Like '1%'
     ...
   And col1 Not Like '9%'
0 голосов
/ 16 ноября 2010

Самый простой способ - просто заметить, что вы не используете числа;вы используете строки, в которых есть числа.В этом случае вы можете сделать

select * from table1 where col1 not between '0' and '9:'; 

(где двоеточие является символом ASCII после «9»; таким образом «9999999» не будет найден).

Это должно быть намного дешевле, чем некоторые другие предложения (например, проверка значения первого символа).

0 голосов
/ 16 ноября 2010

@ Дуэбер заставил меня задуматься, не могли бы вы просто сделать это?

SELECT * FROM table1 WHERE col1 > '9'

Возьмите первый символ, посмотрите, является ли он числовым.

SELECT *
FROM   table1
WHERE  ISNUMERIC(SUBSTRING(col1,1,1)) = 0

SUBSTRING

ISNUMERIC

0 голосов
/ 16 ноября 2010

В код проекта имеется сообщение, позволяющее использовать Regex с Ms SQL.

Надеюсь, эта помощь.

...