【问题标题】:Right Substring Statement SQL右子串语句 SQL
【发布时间】:2016-06-05 15:44:06
【问题描述】:

我想从右边开始从字符串中提取第七和第八个字符

我想尝试一下动态:

select substring(right(P.Name,8), 1,2)

如何正确编写右子字符串函数 SQL?我正在做的事情不起作用。

【问题讨论】:

  • 你能定义“不工作”吗???一些样本数据和预期的输出会有很大帮助。
  • 如果字符串有 8 个或更多字符,则此工作,
  • 第 1 步 - 如果字符串少于 8 个字符,请确定要返回的内容。

标签: sql sql-server tsql substring


【解决方案1】:

你应该看看如何正确使用SUBSTRING

SELECT SUBSTRING('123456789',7,2)

7 是您开始的位置,2 是您要检索的字符串的长度。

编辑

如果你想SUBSTRING从右边开始(根据你的cmets),你可以使用REVERSE

SELECT SUBSTRING(REVERSE('123456789'),7,2)

【讨论】:

  • 是的,我知道,但我想从右边开始做一些事情
  • @stoner 这是什么意思?,您想要字符串中的第 7 个和第 8 个字符
【解决方案2】:

这对我来说比双 REVERSE() 方法更有意义:

select substring(P.Name,len(P.Name) + 1 - 8, 2)

我们使用长度 + 1,因为 substring() 是基于 1 而不是基于 0 的函数。也就是说,第一个字符是字符 1,而不是字符 0。

请注意,如果字段长度小于 7 个字符,则返回一个空字符串。如果该字段的长度正好为 7 个字符,则仅返回第 7 个字符。如果字段长度至少为 8 个字符,则返回第 7 个和第 8 个字符。

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多