In arabo abbiamo personaggi come ا (alef) e أ (alef con hamza).
Gli utenti li scrivono in modo intercambiabile e vogliamo cercarli in modo intercambiabile. SQL Server li considera come caratteri separati. Come posso fare in modo che SQL li tratti come lo stesso personaggio?
Ho pensato di sostituire qualsiasi أ (alef con hamza) con ا (alef) al momento dell'inserimento, ma abbiamo molte alternative in lingua araba non solo ا (alef) e أ (alef con hamza).
Ho provato Arabic_CI_AS
e Arabic_CI_AI
questo non risolve il problema.
Ecco uno script per rigenerare il problema:
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'ا%';
Il risultato è:
ArabicChars
احمد
(1 row(s) affected)
Il risultato desiderato sarebbe entrambe le righe che abbiamo inserito.
ا and أ