Sql server 修剪sql server列中的子字符串

Sql server 修剪sql server列中的子字符串,sql-server,string,tsql,Sql Server,String,Tsql,我在文本列中有数据,看起来像xxxxx.x.xx 我需要将字符串放入格式为xxxxx.x的视图中,删除尾随的.xx 我不知道该怎么做。任何帮助都将不胜感激 我想我需要知道从开始到第二节的长度。然后离开那个长度 我还想知道,这可以作为一个列表达式来完成,还是需要一个函数 这是另一个转折点。如果字符长度是可变的,例如xxxxxx.xx.x和xxxxx.x.x,我将如何处理相同的问题?这可以通过以下表达式实现: left(@s, charindex('.', @s, charindex('.', @s

我在文本列中有数据,看起来像xxxxx.x.xx 我需要将字符串放入格式为xxxxx.x的视图中,删除尾随的.xx

我不知道该怎么做。任何帮助都将不胜感激

我想我需要知道从开始到第二节的长度。然后离开那个长度

我还想知道,这可以作为一个列表达式来完成,还是需要一个函数


这是另一个转折点。如果字符长度是可变的,例如xxxxxx.xx.x和xxxxx.x.x,我将如何处理相同的问题?

这可以通过以下表达式实现:

left(@s, charindex('.', @s, charindex('.', @s) + 1) - 1)
其中@s是您的varchar值

在线演示:

您也可以尝试以下方法:

SELECT 
    REVERSE(
        SUBSTRING(
            REVERSE(@word),
            CHARINDEX('.', REVERSE(@word))+1,
            LEN(REVERSE(@word))
                 )
            )
FROM yourTable
这是一个


此解决方案是通用的,因此它也适用于您有xx.xxxx.xx.xxx或任何其他数量的用点分隔的字母的情况。

-我在我的帖子中添加了另一个细节。@Ryan这仍然有效。顺便说一下,对于这样一个简单的问题,您应该能够从一开始就添加所有细节。@BogdanSahlean RTRIM和LTRIM在这种情况下会很有帮助
select 'xxxxx.x.xx' as original
,Replace( 'xxxxx.x.xx',Right('xxxxx.x.xx',3),'') as new