2016-05-19 3 views
0

Можно ли использовать запрос, как это:Использование SUBSTR() с MySQL WHERE

SELECT `id`, `userid` FROM `table` WHERE SUBSTR(`displayname`, 0, 5)='aString' 

Так что я хочу SUBSTR() в WHERE часть, а не столбец часть, но это, кажется, не работает ...

+0

попробовать! он должен работать – splash58

+0

Почему вы говорите, что он не работает? Для хорошего вопроса потребуется сообщение об ошибке или индикативный вывод. –

+0

Потому что (см. Мой собственный ответ) Я допустил ошибку, что MySQL начинает строку на 1, PHP начинается с 0. Так что я не получил выход, но также и сообщение об ошибке. – alve89

ответ

1

Да, вы можете использовать его:

SELECT `id`, `userid` 
FROM `table` 
WHERE SUBSTR(`displayname`, 1, 7)='aString'; 

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

Имейте в виду, что это условие не SARGable и не будет использовать индекс на displayname, если таковой существует.


Вы могли бы переписать как:

SELECT `id`, `userid` 
FROM `table` 
WHERE `displayname` LIKE 'aString%'; 
0

Он работает следующим образом (обратите внимание на 1 вместо 0):

SELECT `id`, `userid` FROM `table` WHERE SUBSTR(`displayname`, 1, 5)='aString'