2016-07-13 2 views
1

Я хочу проверить, содержит ли строка в строке «9123456», и у меня есть строка со значением «+9123456», которая является совпадением, а другой случай - это мое значение «9123456», и мне нужно проверить, +9123456 "и вот где я застрял.Запись Mysql содержит проверку

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

+0

MYSQL поддерживает использование 'AND'. –

+0

Можете ли вы предоставить схему таблицы с данными примера, как лучший пример –

+0

Есть много способов сделать это, что вы пытались сделать до сих пор? – Blank

ответ

1

Вы можете использовать функцию replace, чтобы удалить из столбца + (предполагая, что + является единственным в этом столбце).

SELECT number FROM phonenumber WHERE replace(number, '+', '') = 9123456 

Демо: http://sqlfiddle.com/#!9/750609/2

или регулярное выражение:

SELECT number FROM phonenumber WHERE number regexp '^\\+?9123456$' 

Демо: http://sqlfiddle.com/#!9/750609/5

+0

Отлично, вы можете больше смотреть на регулярные выражения здесь, https://regex101.com/r/cA9aK9/1. Примечание. Mysql использует 'posix', а не' pcre'. Пожалуйста, не забудьте принять ответ после того, как вы закончили тестирование, http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work. – chris85

1

Другой способ будет литье как столбец и ваш номер входа в UNSIGNED INTEGER.

SELECT 
    * 
FROM 
    phonenumber 
WHERE CAST(number AS UNSIGNED) = CAST('+9123456' AS UNSIGNED); 

SQL FIDDLE DEMO

Подробнее:

Вы можете добавить 0 к входному номеру перед сопоставлением с column number.

SELECT 
* 
FROM phoneNumber WHERE number = '9123456'+0; 

Добавление нуля (0) к varchar будет преобразовать его в число, если varchar содержит действительное число, представленное в виде строки. В противном случае результат 0

SQL FIDDLE DEMO

+0

спасибо за ваш ответ .... это сработало даже ... понравилось +0 решение – bharatkumar

Смежные вопросы