如何使用T-SQL从字符串中删除重复的空间

时间:2018-12-18 23:02:31

标签: sql sql-server database tsql

我有一个像这样的字符串'Hello <> world'。我正在使用下面的代码从字符串中删除重复的空间。但是它会从字符串中删除<>

SELECT ' Hello  <>   world ' AS Name
INTO #Temp;

SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)), ' ', '<>'), '><', ''), '<>', ' ') AS CleanName
FROM #Temp;

还有其他选择吗?

3 个答案:

答案 0 :(得分:2)

使用此表达式,该表达式依赖于不可打印的ASCII字符:

SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)),' ','CHAR(17)CHAR(18)'),'CHAR(18)CHAR(17)',''),'CHAR(17)CHAR(18)',' ') AS CleanName
FROM #Temp;

收益率:

Hello <> world

答案 1 :(得分:1)

也许这可以帮助您:

class Char:

    def __init__(self, x, y):
        self.str = x
        self.con = y

    def get_hp(self):
        return (self.con + self.str) / 2

player = Char(20, 20)


def main(dude):
    print("strength:     " + str(dude.str))
    print("constitution: " + str(dude.con))
    print("hp: " + str(dude.get_hp()))
    print("------")
    action = input("press 1 to change str, 2 to change con")
    if action == "1":
        dude.str = dude.str + 10
        main(dude)
    elif action == "2":
        dude.con = dude.con + 10
        main(dude)
    else:
        main(dude)

答案 2 :(得分:0)

这项技术很扎实,但是如果您想保留<>,则可以使用一种罕见的文本模式

示例

SELECT ltrim(rtrim(replace(replace(replace(Name,' ','†‡'),'‡†',''),'†‡',' ')))
FROM #Temp;

返回

Hello <> world

注意ltrim(rtrim(...))是可选的