Проблема SQL с оператором Like не работает должным образом

#sql #teradata-sql-assistant

Вопрос:

У меня проблема с sql с использованием teradata sql-помощника с оператором like, как показано в приведенном ниже примере:

таблица А

 id|
23_0
111_10
201_540
 

поэтому я должен выбрать только идентификатор, заканчивающийся на ‘_0’

я попытался выполнить приведенный ниже запрос, но он дал мне все три идентификатора

 select * from A 
where id like '%_0'
 

но я ожидаю только

 id|
23_0
 

у вас есть какие-нибудь идеи, пожалуйста ?

Ответ №1:

Проблема в том, что _ это особый персонаж. Итак, один из методов заключается в:

 where id like '$_0' escape '

Вы также можете использовать right()  :

 where right(id, 2) = '_0'
 

Комментарии:

1. спасибо @Gordon Linoff за ваш ответ, я протестировал первое решение, но,похоже, оно не работает, я ничего не получил, второе решение я не могу его использовать, потому что у меня много идентификаторов в моих реальных данных, поэтому у меня есть не только эти примеры, поэтому я не могу использовать правильно (id, 2)

2. Для вашего случая все еще нужна % wild-карта: where id like '%$_0' escape '$'

Вы также можете использовать right() :


Комментарии:

1. спасибо @Gordon Linoff за ваш ответ, я протестировал первое решение, но,похоже, оно не работает, я ничего не получил, второе решение я не могу его использовать, потому что у меня много идентификаторов в моих реальных данных, поэтому у меня есть не только эти примеры, поэтому я не могу использовать правильно (id, 2)

2. Для вашего случая все еще нужна % wild-карта: where id like '%$_0' escape '$'