Есть ли способ игнорировать и принимать параметры сортировки? - PullRequest
1 голос
/ 24 января 2020

У меня проблема с запросом SQL:

SELECT  CLCLEUNIK, NOM, VILLE, CODEP 
FROM CLIENT 
WHERE NOM LIKE :nom COLLATE French_CI_AI

В моем случае я использую параметры сортировки, потому что пользователь может искать «rhone», а он находит «rhône». Но моя проблема в том, что теперь, когда кто-то ищет "Rhône", запрос не находит соответствия в моей базе данных.


Редактировать: это создание базы:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[CLIENT](


    [NOM] [varchar](50) NULL,
    [ADRESSE] [text] NULL,
    [CODEP] [varchar](5) NULL,
    [VILLE] [varchar](40) NULL,
    [TYPECLI] [int] NULL,
    [TEL] [varchar](20) NULL,



) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

Это php код:

 public function searchCli(Request $request){
        require __DIR__.DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."Entity".DIRECTORY_SEPARATOR."sqlconnect.php";


          $nom = $request->request->has("nom") ? $request->request->get("nom") : "";
          $nom = str_replace(" ", "%", $nom);


          $req ="SELECT  CLCLEUNIK, NOM, VILLE, CODEP FROM CLIENT WHERE NOM LIKE :nom COLLATE French_100_CI_AI";
          $prepare = $pdo->prepare($req);
          $prepare->execute(
            [
              "nom" => "%{$nom}%"
            ]
          );



          $clientsrecherche = $prepare->fetchAll(PDO::FETCH_OBJ);

          foreach($clientsrecherche as $key => $objet){
            foreach($objet as $key2 => $obj){
              $obj=utf8_encode($obj);
              $response[$key][$key2] = $obj;
            };
          }                     
            return new JsonResponse([ "response" => $response]);
       }

Это все, что я могу помочь

1 Ответ

0 голосов
/ 24 января 2020

Для более подробного описания:

свойства сопоставления:

CI определяет регистр не учитывается (регистр не учитывается, поэтому 'AB C' будет равно 'ab c')

CS указывает регистр символов

AS определяет акцент чувствительности (акцент чувствителен, поэтому 'ü' не равно 'u')

AI указывает нечувствительный к акценту

Вы можете попробовать French_100_CI_AI вместо French_CI_AI

...