在字符串的开头和结尾计算空格(ASCII码32)

Gui*_*rme 7 sql t-sql sql-server string

我正在努力解决以下问题.我有一个包含这种数据的专栏:

'abbb ccc   '
'    aaa abbb ccc'
'abbb ccc   '
'   aaa abbb ccc   '
'   ccc'
'aaa abbb'
Run Code Online (Sandbox Code Playgroud)

我想计算左边的空格数和每个字符串右边的空格数.

Tim*_*sen 6

尝试使用的组合LEN,LTRIM以及REVERSE:

SELECT
    LEN(col) - LEN(LTRIM(col)) AS num_left,
    LEN(REVERSE(col)) - LEN(LTRIM(REVERSE(col))) AS num_right
FROM yourTable;
Run Code Online (Sandbox Code Playgroud)

演示

正如@AaronDietz在下面的评论中提到的,LEN实际上也修剪了右边的空白.但LEN不影响领先的空白.为了弥补这一点,我们可以反转字符串,然后使用LTRIM.

  • 为什么不直接使用数据长度呢?这比使用反向简单得多.:) datalength(col) - len(col)as RightCount (3认同)