Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 替换数据库中的阿拉伯文字母_Sql Server_Database_Replace_Arabic - Fatal编程技术网

Sql server 替换数据库中的阿拉伯文字母

Sql server 替换数据库中的阿拉伯文字母,sql-server,database,replace,arabic,Sql Server,Database,Replace,Arabic,当将单词处的字母(ي)更改为字母(ى)时,没有问题,但更改字母中间的字母(ي)会有问题吗 DECLARE @FullName VARCHAR(100) SET @FullName = 'عبدالله عيد محمد علي' Select @FullName, REPLACE(@FullName,'ى ','ي ') 有没有办法忽略信的中间部分 DECLARE @FullName VARCHAR(100) SET @FullName = 'عبدالله عي

当将单词处的字母(ي)更改为字母(ى)时,没有问题,但更改字母中间的字母(ي)会有问题吗

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

Select @FullName, REPLACE(@FullName,'ى ','ي ')
有没有办法忽略信的中间部分

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

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

--ع


您可以结合使用
STRING\u SPLIT
STUFF
REVERSE
将字符串按空格分割,然后替换每个单词中最后出现的字符。然后可以使用
STRING\u 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等价物

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))
用这个输出

这对我来说很好,但是如果我想重复检查每个单词的最后一个字母,比如
SET@FullName='a 1593بببلهعكلمومعملي
@AhmedAlkhteeb,我已经更新了我的答案。请注意,您需要SQL Server 2017或更高版本才能使其正常工作,但这次SQL Server Management Studio 15.0.18142.0 Microsoft Analysis Services客户端工具15.0.1389.0 Microsoft数据访问组件(MDAC)无法正常工作10.0.18362.1 Microsoft MSXML 3.0 6.0 Microsoft Internet Explorer 9.11.18362.0 Microsoft.NET Framework 4.0.30319.42000操作系统10.0.18362如何处理该查询我不理解并更新了答案。是的,答案非常清楚(且有效)。谢谢你的帮助,谢谢你的时间。我也有同样的问题。更换似乎还可以。但当我在insert或update脚本中使用它时,它什么也没做,而是保存了原始短语。我很困惑。