Заменить арабское письмо в базе данных - PullRequest
1 голос
/ 23 октября 2019

При смене буквы (ي) в слове на букву (ى) меняется и проблем нет, но проблема в изменении буквы (ي) в середине буквы?

есть решение игнорировать середины буквы?

DECLARE @FullName        VARCHAR(100)
SET @FullName = 'عبدالله عيد محمد علي'

Select @FullName, REPLACE(@FullName,'ى ','ي ')

- عبدالله عيد محمد علي

- عبدالله عىد محمد على

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Вы можете использовать комбинацию STRING_SPLIT, STUFF и REVERSE, чтобы разбить строку на пробелы, а затем заменить последнее вхождение символа в каждом слове. И затем вы можете использовать STRING_AGG для объединения обратно с пробелами.

DECLARE @FullName NVARCHAR(100)
SET @FullName = 'testexecution testexecution'

SELECT STRING_AGG(VALUE,' ') AS UpdatedFullName FROM
( 
SELECT STUFF(VALUE, LEN(VALUE) +1 - CHARINDEX('t', REVERSE(VALUE)), 1, 'k') AS VALUE   -- Replace last occurence of 't' with 'k'
from STRING_SPLIT(@FullName,' ')
) AS ReplacedResult

ПРИМЕЧАНИЕ. Для этого потребуется SQL Server 2017 или более поздней версии

Также ваша база данныхКажется, что используется несколько языков, поэтому я бы предложил использовать NVARCHAR вместо VARCHAR для поддержки Unicode

0 голосов
/ 23 октября 2019

Попробуйте использовать их Unicode-эквиваленты

Select NCHAR(1740) as N'ي فارسي - Persian Ye', 
       NCHAR(1610) as N'ي عربي - Arabic Ye',
       NCHAR(1705) as N'ك فارسي - Persian Ke',
       NCHAR(1603) as N'ك عربي - Arabic Ke'

Например,

DECLARE @FullName  NVARCHAR(100)
SET @FullName = N'عبدالله عيد محمد علي'
Select @FullName, REPLACE(@FullName, NCHAR(1610), NCHAR(1740))

С этим выводом enter image description here

...