W języku arabskim mamy znaki takie jak ا (alef) i أ (alef with hamza).
Użytkownicy piszą je zamiennie, a my chcemy je wyszukiwać zamiennie. SQL Server traktuje je jako osobne znaki. Jak zmusić SQL do traktowania ich jako tego samego znaku?
Pomyślałem, że przy wstawianiu mogę zastąpić dowolne أ (alef z hamza) przez ا (alef), ale mamy wiele alternatyw w języku arabskim, nie tylko ا (alef) i أ (alef z hamza).
Próbowałem Arabic_CI_AS
i Arabic_CI_AI
ale to nie rozwiązuje problemu.
Oto skrypt do ponownego wygenerowania problemu:
CREATE TABLE [dbo].[TestTable] (
[ArabicChars] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[ArabicChars] ASC
)
) ON [PRIMARY];
INSERT INTO TestTable values (N'احمد');
INSERT INTO TestTable values (N'أحمد');
SELECT *
FROM TestTable
WHERE ArabicChars like N'ا%';
Wynik to:
ArabicChars
احمد
(1 row(s) affected)
Pożądanym rezultatem byłyby oba wstawione wiersze.
ا and أ