我該如何從一個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