我该如何从一个varchar形式的数字中删除前导零。 我曾尝试以下:从varchar中删除前导零sql开发者
选项1:
insert into example_table (columnName)
(SELECT
SUBSTR(columnName2, InStr('%[^0 ]%', columnName2 + ' '), 10)
from columnName2);
有了这个,我得到的错误是
SQL Error: ORA-01722: invalid number
ORA-02063: preceding line from xxxx
01722. 00000 - "invalid number"
选项2:
insert into example_table (columnName)
(SELECT
SUBSTR(columnName2, InStr('%[^0 ]%', columnName2 + ' '),
LEN(columnName2))
from columnName2);
这一次我得到
Error at Command Line:23 Column:87
Error report:
SQL Error: ORA-00904: "LEN": invalid identifier
方案3:
SUBSTRING
(columnName2, PATINDEX('%[^0 ]%', columnName2 + ' '), 10));
与上述类似,我得到
Error at Command Line:23 Column:41
Error report:
SQL Error: ORA-00904: "PATINDEX": invalid identifier
00904. 00000 - "%s: invalid identifier"
编辑
我认为微调的路线可能是我最好的选择,但是...我不确定如何在我拥有的情况下使用它。
INSERT INTO temp_table
(columnNeedTrim, column2, column3, column4, column5)
SELECT * FROM
(SELECT(
SELECT TRIM(leading '0' from columnNeedTrim) FROM table),
table.column2,
table2.column3,
table.column4
table.column5
FROM
table
INNER JOIN
table2 ON
table1.columnNeedTrim=table2.columnNeedTrim)
WHERE NOT EXISTS (SELECT * FROM temp_table);
我现在得到一个错误,因为我的修剪函数返回多行结果。
Error report:
SQL Error: ORA-01427: single-row subquery returns more than one row
01427. 00000 - "single-row subquery returns more than one row"
我不知道如何在上面的语句中使用trim(或cast)。对此有何帮助? 感谢您的帮助!
这是否也适用于SQL Server 2008?你把它标记为这样,但那只是被其他人删除。 – JNK
它是为SQL开发人员...并不意味着标记为服务器2008 – ola