【问题标题】:how to trim a field with Persian text in SQL Server如何在 SQL Server 中使用波斯文本修剪字段
【发布时间】:2014-07-12 06:46:09
【问题描述】:

我有一列应该包含城市名称,但有些用户输入了完整地址时出错。现在我想删除多余的部分,只保留第一部分。

例如我有:

  1- Paris,lab lab, shop shop, no 23
  2- London,street 1,street 2,No 11 
  3- New York,street 1,street 2,No 11   

但我想要的是:

 1-Paris

 2-London

 3-New York 

但我只想要巴黎,我想删除其余的。 city 列使用波斯语,您可能知道,波斯语是从右到左书写的。

感谢您的帮助

【问题讨论】:

  • 如何使用 REVERSE,然后使用 INDEXOF SUBSTRING,然后再次 REVERSE?
  • 有没有办法检测字段中使用的逗号或任何其他分隔符并从那里删除?
  • 告诉我一件事,当你说你的数据是 1-Paris... 后来你说波斯语是从右到左写的,那么你的意思是你的数据中有 1-siraP,是对吗?
  • 不,亲爱的,我没有用波斯语写出确切的值,因为我认为你不会理解它。地址如下: تهران،خیابان 1،خیابان 2،خیابان 3 我只想要 تهران
  • 这在波斯语中并不重要,我的问题是关于字符的顺序。因此,例如,您有 1-ddddddd、siraP 并且您期望 1-siraP

标签: sql sql-server persian trim


【解决方案1】:

这对我有用:

SELECT 
LTRIM(REVERSE(SUBSTRING(REVERSE([name]),1, CHARINDEX('٬', REVERSE('٬' + [name])) - 1)))
FROM dbo.City

如果您想更改数据,可以为 UPDATE 创建类似的查询。

澄清: 如果您在 dbo.City 表中有以下城市:

  1. 伦敦
  2. 纽约
  3. 1 号线,2 号线,巴黎

然后返回

  1. 伦敦
  2. 纽约
  3. 巴黎

如果我没有正确理解您的意思,请使用您期望的示例更新您的帖子。

【讨论】:

  • 这个查询应该返回城市列中的所有值吧?修剪后?但它没有:(它只是返回写在城市字段中的旧地址
  • 查看更新后的示例。该查询应保留从右到左的符号,并删除字符串中直到最后一个逗号的所有内容。
  • 我更新了问题,看看你是否正确理解了问题。谢谢
  • 我用波斯逗号而不是英文逗号更新了答案。试试看是否有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
相关资源
最近更新 更多