【发布时间】:2022-01-13 14:43:49
【问题描述】:
如何从 varchar 形式的数字中删除前导零。 我尝试了以下方法:
选项 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"
我不确定如何在上面的语句中使用修剪(或演员表)。有什么帮助吗? 感谢您的帮助!
【问题讨论】:
-
这也适用于 SQL Server 2008 吗?您已将其标记为此类,但刚刚被其他人删除。
-
它是为 SQL 开发人员准备的...并不是要为服务器 2008 标记