使用SQL删除文本数据中的内部空格

时间:2013-06-17 20:35:38

标签: sql whitespace teradata

我所有的东西似乎都是一个非常直截了当的问题,我一直无法弄明白。例如,如果我有一个像T6L 7H5这样的文本字符串。使用SQL我需要从此字符串中删除内部空格,以便显示为T6L7H5

需要考虑的事项:

  • Teradata(第13.10节)是我的RDBMS,因此REPLACE('T6L 7H5', ' ', '')不是 选项在这里。
  • 在这个特定的服务器上,我是一个非常有限的商业用户 权限,因此创建UDF也不是一种选择。

3 个答案:

答案 0 :(得分:2)

无法测试这个,所以吐痰,但你应该能够利用子串和位置:

SELECT SUBSTRING('T6L 7H5', 1, POSITION (' ' IN 'T6L 7H5')-1) || SUBSTRING('T6L 7H5',  POSITION (' ' IN 'T6L 7H5')+1, CHARACTER_LENGTH('T6L 7H5') -  POSITION (' ' IN 'T6L 7H5') )

如果该字段的格式与您的示例一致,那么:

substring('T6L 7H5',1,3)||substring('T6L 7H5',4,3)

答案 1 :(得分:1)

对于单个空格,您可以使用POSITION()SUBSTRING()。您必须为POSITION()函数返回的空白位置进行偏移。

   WITH CTE(FieldName) AS
    (SELECT 'TB7 TCH' AS FieldName)
    SELECT SUBSTRING(FieldName FROM 1 FOR (POSITION(' ' IN FieldName) - 1)) 
            || SUBSTRING(FieldName FROM (POSITION(' ' IN FieldName) + 1))
    FROM CTE;

答案 2 :(得分:0)

尝试使用substr(); 例如:4 =从位置4开始&& 1 =删除一个字符。

   substr(Table1.fieldname, 4,1)