SQL Server:在没有CHARINDEX的情况下提取Midddle字符

时间:2018-06-16 15:44:11

标签: sql sql-server

首先,我在这里看到CHARINDEX结果,但它们似乎都不适用于我的情况。原因是a,CHARINDEX无法帮助我,或者b,我不理解CHARINDEX如何运作。话虽这么说,我想在这里提出我的问题,希望我能就如何解决我的问题和CHARINDEX得到一些澄清,如果这恰好是这个问题得到解决的方式。

我想要从中提取的变量具有不同的长度。但是,有两件事总是不变的。

  1. 字符串
  2. 中始终有'/'作为第16个字符
  3. 字符串中的最后一个字符始终为“0”或“1”
  4. 我要做的是从'/'和'0'或'1'之间提取名称。简而言之,我想要切掉前16个字符和每个字符串的最后一个字符。到目前为止,这就是我所拥有的:

    SELECT 
        SUBSTRING([string_name], 17, LEN([string_name]) - 1) AS 'username'
    FROM
        [table_name]
    

    我得到的结果仍然包含最后的0 OR 1。我需要做的是以某种方式从字符串中删除0。值得注意的是,“/”和“0”之间的字符数总是不同的。

    目前的结果:

    gordon0
    grant0
    greg0
    guy1
    hanying0
    

    期望的结果:

    gordon
    grant
    greg
    guy
    hanying
    

    这里的任何建议都很棒。

    如果您需要我提供任何其他信息,请与我们联系。如果可能,希望继续使用SUBSTRINGLEFTRIGHT

    由于

1 个答案:

答案 0 :(得分:2)

调整长度似乎可以解决您的问题:

SELECT SUBSTRING([string_name], 17, LEN([string_name])-17) AS username
FROM [table_name]