Tsql LTRIM不会删除SQL中的前导空格

Tsql LTRIM不会删除SQL中的前导空格,tsql,trim,Tsql,Trim,我从文本文件加载数据,它似乎不包含前导空格,但是当我从表中选择时,我看到前导空格,但无法使用LTRIM函数将其删除: SELECT ltrim(DATA) FROM MYTABLE WHERE LineNumber = 4 我得到以下信息: T000000000004 在T前面有一个前导空格 当我从mytable中选择convert(varbinary,data)时,我得到的是: 0x0A54303030303030303030303034 在文件中,它看起来正常:T0000000000

我从文本文件加载数据,它似乎不包含前导空格,但是当我从表中选择时,我看到前导空格,但无法使用
LTRIM
函数将其删除:

SELECT ltrim(DATA) FROM MYTABLE WHERE LineNumber = 4
我得到以下信息:


T000000000004
在T前面有一个前导空格

当我从mytable中选择convert(varbinary,data)时,我得到的是:

0x0A54303030303030303030303034
在文件中,它看起来正常:
T000000000004
-没有前导空格,它从文件中的第一个字符开始。但是,在表中,它插入了前导空格


我怎样才能修好它

正如HABO所提到的,您的值不是以空格开头的,它实际上根本没有任何空格,它有一个前导行提要(字符10,或
0X0A

要删除这些,以及您可能拥有的任何回车符,您可以使用
REPLACE

REPLACE(REPLACE(data,CHAR(10),'')),CHAR(13),'')
(左/右)微调
仅删除前导/尾随空格。没有别的了

如果可能有一系列的前导字符,并且您希望删除所有前导字符,比如第一个字母数字字符,那么您可以使用
PATINDEX
STUFF

SELECT STUFF(V.[data],1,PATINDEX('%[A-z1-9]%',V.[data])-1,'')
FROM (VALUES(CHAR(10) + CHAR(13) + '  -T000000129B'))V([data])

它可能是一个不可见的字符,而不是空白,这就是为什么LTRIM无法删除它。能否尝试获取该字符的字符代码(ASCII/UNICODE)?这可能会给你一个线索,你给我们的例子确实把它删除了。准确地复制您收到的值,并显示您的SQLLTRIM@Larnu这是因为我在这里输入了它。这就是为什么我说“.ACutally复制您收到的值,并显示您的SQL与LTRIM”@gene。你的问题没有重复问题,也没有使用
LTRIM
@Larnu我修改了问题谢谢。事实就是这样