Как искать определенный шаблон в поле базы данных? - PullRequest
0 голосов
/ 19 декабря 2008

У меня есть столбец с полями, такими как C5, C6, C3, CC, CA, CD и т. Д.

Я хочу найти все столбцы, в которых есть буква, а затем число, например C5 и C6.

Я знаю, знаю ли я:

SELECT * FROM TABLE WHERE FIELD LIKE 'C%'

Он также вернет CC, CA, CD, но я не хочу этого, я просто хочу вернуть эти числа. Я также хочу обновить этот столбец, удалив число, поэтому C5 становится C, а C6 становится C и т. Д.

Ответы [ 4 ]

3 голосов
/ 19 декабря 2008

Запрос будет SELECT * FROM TABLE WHERE FIELD LIKE 'C[0-9]%'

1 голос
/ 19 декабря 2008

Что вам действительно нужно сделать, так это перестроить структуру, так как вам не следует хранить данные таким образом. Дочерняя таблица - это способ хранения данных такого типа, и тогда вы можете легко запрашивать и обновлять. Проблема с принятым решением состоит в том, что у вас все еще будут проблемы, если текст не начинается с C, а обновление будет в лучшем случае неточным, если в одной текстовой группе есть кратные числа с C5, C6. Это нарушает абсолютное первое правило проектирования базы данных, никогда не храните более одного фрагмента информации в столбце на строку.

Если вы действительно хотите точный способ найти и обновить эти записи (даже если вы не можете изменить структуру), вам нужно вытащить их в связанную временную таблицу, в которой есть record_Id и значение и бит «Update» колонка. Затем найдите те с номером и обновите их и флаг обновления, поданный одновременно. Затем для идентификаторов записей, у которых есть хотя бы один флаг, вы затем воссоздаете строку и обновляете саму запись. Вы также должны решить, хотите ли вы два значения просто C, если C5 и C6 оба находятся в строке данных.

1 голос
/ 19 декабря 2008

Попробуйте начать здесь

Справочник Microsoft для Like содержит информацию о выражениях, которые вы можете использовать в утверждениях этого типа.

0 голосов
/ 19 ноября 2009

Используйте любой из этих

select LEFT(col,1) from @t where col like 'c[0-9]%'

select substring(col,1,1) from @t where col like 'c[0-9]%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...