从Firebird中删除制表

时间:2017-02-10 11:05:57

标签: sql firebird

人们,下午好! 无论如何我正在尝试,但我似乎无法在火鸟的varchar结尾处获得一个标签。 有谁知道怎么做?

提前致谢。

编辑以保持更具体:

例:

Select guia, convenio, nome, trim (matricula) from table where guia = '142'

Group by guia, convenio, nome, trim (matricula)

结果

142 | 1 | Name of patient | 111222
142 | 1 | Name of patient | 111222

但是,如果我删除了注册字段,这是一个带有标签的varchar(40):

Select guia, convenio, nome, matricula from table where guia = '142'

Group by guia, convenio, nome

结果是:

142 | 1 | nome do paciente

当我发现问题是注册时:

借助此功能:Char_Length(matricula)

Select guia, convenio, nome, matricula, Char_Length (matricula) from table where guia = '142'

Group by guia, convenio, nome, matricula

结果:

142 | 1 | nome do paciente | 111222 | 6
142 | 1 | nome do paciente | 111222 | 10

1 个答案:

答案 0 :(得分:1)

如果要删除值末尾的选项卡,可以使用以下几个选项:

  • TRIM与显式字符串

    一起使用
    trim(trailing ascii_char(9) from theColumn)
    

    9是制表符。此解决方案假设最后没有空格和制表符的组合。

  • 要解决上一个解决方案的不足之处,请使用REPLACE将空格替换为空格然后修剪:

    trim(trailing from replace(theColumn, ascii_char(9), ' '))
    

但最好的解决方案是通过更新数据并更改应用程序来清理数据,以便这些尾随标签(和空格)不会在数据库中结束。或者,您可以添加一个触发器来为您执行此操作。