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脚本中使用它时,它什么也没做,而是保存了原始短语。我很困惑。