PHP SQL PDO Wildcard запрос - PullRequest
       17

PHP SQL PDO Wildcard запрос

0 голосов
/ 30 апреля 2019

У меня есть таблица с этими значениями:

123, 159, 147, 258, 369

Мне нужно найти данные, которые включают 1 и 2, но не 3. Результат должен быть:

159, 147 and 258.

Я пробовал операторы подстановочных знаков% - [], и не повезло.

$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

$sql = "SELECT * FROM numbers WHERE track LIKE '%[12]%' AND track NOT LIKE '%[3]%'";
$q = $conn->prepare($sql);
$q->execute(array($title));

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Используемый синтаксис работает в SQL Server, но не в MySQL.Вы можете использовать REGEXP:

WHERE track REGEXP '[12]'
AND track NOT LIKE '%3%'

или просто использовать LIKE:

WHERE (track LIKE '%1%' OR track LIKE '%2%')
AND track NOT LIKE '%3%'
0 голосов
/ 30 апреля 2019

Не уверен, что это ваше намерение, но если вы пытаетесь выбрать только записи, начинающиеся с 1 или 2, из пула из 3 цифр, это сработает.

SELECT * FROM numbers WHERE track LIKE '%1[0-9][0-9]' OR track LIKE '%2[0-9][0-9]'
...