【问题标题】:charindex() counts white chars in the end, len() doesn't in T-SQLcharindex() 最后计算白色字符,len() 在 T-SQL 中不计算
【发布时间】:2017-02-08 19:55:32
【问题描述】:

我想找到最后一个/字符的索引,但问题是
LEFT(target, LEN(target) - CHARINDEX('/', REVERSE(target)))
不起作用,因为目标列中的字符串末尾有很多空格字符,charindex 函数包含空格,但len 没有。

还有其他功能可以替代其中一个吗?

【问题讨论】:

  • 什么版本的sql server? SQL Server 没有任何简单的东西可以做这样的事情,这不是很糟糕吗?还是我无知?
  • 有趣的是它显示了您昨天提出的相关问题。这里 - stackoverflow.com/questions/1248512/…

标签: tsql


【解决方案1】:

是的,LEN() 不计算尾随空格。请改用 DATALENGTH,但请注意,它计算的是字节数,而不是字符数,因此如果在 NVARCHAR() 值上使用它,则必须将其除以 2。

【讨论】:

    【解决方案2】:

    RTRIM function 修剪尾随空格。

    LEFT(target,
         LEN(target) - CHARINDEX('/', REVERSE(RTRIM(target))))
    

    【讨论】:

    • 如果您对计算空白感兴趣,此解决方案无济于事。作为 RBarryYoung suggests 使用 DATALENGTH() 代替,但如果使用 unicode 数据,请记住将其除以 2,因为它计算字节而不是字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2011-02-20
    • 2015-10-19
    • 1970-01-01
    • 2013-02-22
    • 2018-09-02
    • 1970-01-01
    相关资源
    最近更新 更多