2015-07-15 2 views
1

Пользователь как ниже,Использование NOT LIKE в WHERE Таблица Статья

name | username | email 
--------------------------------- 
Joe | joe  | [email protected]  
--------------------------------- 
John | ABC\john | [email protected]  
--------------------------------- 
Kate | kate  | [email protected] 
--------------------------------- 
Ron | ABC\ron | [email protected] 
--------------------------------- 

Запрос MySql, чтобы выбрать все поля из таблицы, где имя пользователя в таблице не начинается с «ABC \». Поскольку пользователь регистрируется в приложении с использованием учетных данных активного каталога, имя пользователя хранится в домене \ имя пользователя (например: ABC \ username). Я попытался создать запрос, но он не работает.

Select * from User where username NOT LIKE 'ABC\\\\%_' 

Но не работает. Это тянет все записи пользователя.

name | username | email 
--------------------------------- 
Joe | joe  | [email protected]  
--------------------------------- 
John | ABC\john | [email protected]  
--------------------------------- 
Kate | kate  | [email protected] 
--------------------------------- 
Ron | ABC\ron | [email protected] 
--------------------------------- 

Но мне нужны пользователи, чье имя пользователя не начинается с «ABC».

name | username | email 
--------------------------------- 
John | ABC\john | [email protected]  
--------------------------------- 
Ron | ABC\ron | [email protected] 
--------------------------------- 

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

Select * from User where email NOT LIKE '_%@abc.com' 

Я новичок в запросах и может управлять писать простые запросы, но это один я не уверен, если Я следую правильному пути.

+0

Пожалуйста, отредактируйте ваш вопрос с примерами того, что работает и что не работает. –

+0

Работает нормально для меня - можете ли вы показать некоторые данные примера в таблице – PaulF

+0

Вы отправляете свой запрос непосредственно на сервер или есть какие-то преобразования на этом пути? Мне интересно, изменилась ли ваша \\\\ последовательность до того, как она дойдет до сервера? – tomsv

ответ

0

Я не знаю, кто отправил ответ

Select * from User where username NOT LIKE 'ABC\%' 

, который работает здесь. Я следил за link, он не работал, не знаю почему. Спасибо всем

0

Ваш запрос отлично подходит для меня. Я думаю, ваша проблема заключается в использовании обратной косой черты в строке, которая будет вашим запросом.

  $not_like= "ABC\\%"; 
      $statement = $db->prepare("SELECT * FROM `User` WHERE `email` NOT LIKE ?"); 
      $statement->bind_param('s', $not_like); 
      $statement->execute(); 
      $result = $statement->get_result(); 
      while($get_users = $result->fetch_assoc()) { 
       echo($get_users['username']); 
      } 
      $result2->free(); 
+0

OP сказал, почему в строке имени пользователя есть обратная косая черта - его запрос должен работать, насколько я могу видеть, и делает с моей таблицей. – PaulF

+0

@PaulF его вопрос в порядке, но я думаю, что пока он использует обратную косую черту в строке, он не может передать его непосредственно в mysql. Использование bind_param - лучший способ – Farshad

+0

Я спросил, как он выполняет запрос - поскольку tomsv сказал, что он может быть изменен до того, как он попадет на сервер. – PaulF

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