[英]Is there a way to ignore and accept collate?
I have a problem with a SQL request :我的 SQL 请求有问题:
SELECT CLCLEUNIK, NOM, VILLE, CODEP
FROM CLIENT
WHERE NOM LIKE :nom COLLATE French_CI_AI
In my case, I use the collate because a user can search "rhone" and it will find "rhône".就我而言,我使用整理,因为用户可以搜索“rhone”,它会找到“rhône”。 But my problem is that now when someone searches "Rhône", the request doesn't find any match in my database.
但我的问题是,现在当有人搜索“Rhône”时,该请求在我的数据库中找不到任何匹配项。
Edit : this is the creation of the base :编辑:这是基础的创建:
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
This is the php code :这是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]);
}
It's all I can have to help这是我所能提供的帮助
CI
specifies case-insensitive (case insensitive comparisons so 'ABC' would equal 'abc') CI
指定不区分大小写(不区分大小写的比较,因此 'ABC' 将等于 'abc')
CS
specifies case-sensitive CS
指定区分大小写
AS
specifies accent-sensitive (accent sensitive, so 'ü' does not equal 'u') AS
指定重音敏感(重音敏感,所以 'ü' 不等于 'u')
AI
specifies accent-insensitive AI
指定不区分重音
You can try French_100_CI_AI
instead of French_CI_AI
你可以试试
French_100_CI_AI
而不是French_CI_AI
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.