我有一個字段是VARCHAR(6)
我試圖將其插入到bigint
類型的另一個表這是給我一個錯誤SQL,如何將VARCHAR轉換爲bigint?
(錯誤的數據類型爲varchar轉換爲bigint
這裏是我在做什麼
CONVERT(bigint, seconds) as seconds
任何人可以用這個問題上需要幫助?
我有一個字段是VARCHAR(6)
我試圖將其插入到bigint
類型的另一個表這是給我一個錯誤SQL,如何將VARCHAR轉換爲bigint?
(錯誤的數據類型爲varchar轉換爲bigint
這裏是我在做什麼
CONVERT(bigint, seconds) as seconds
任何人可以用這個問題上需要幫助?
這就是答案
(CASE
WHEN
(isnumeric(ts.TimeInSeconds) = 1)
THEN
CAST(ts.TimeInSeconds AS bigint)
ELSE
0
END) AS seconds
可能要編輯這是正確的,因爲'isnumiric'將不存在(拼寫檢查)。另外,即使'CONVERT()'(和'ISNUMERIC()')在你的機器上工作,你已經將你的問題標記爲'sql',這是一個_language_ - 你的機器有一個特定的_implementation_(SQL Server)。標準是'CAST(... as BIGINT)' - 對未來的觀衆來說,最好是用相關的RDBMS標記你的問題,或者寫一個'標準'版本。 –
謝謝你:) – Jaylen
所以你想要的是如果'TimeInSeconds'中的值是一個有效的整數就插入'1',如果它不是一個有效的整數,則是'0'?你不想讓'TimeInSeconds'列中的值插入某處嗎? –
的替代辦法是做這樣的事情:
SELECT
CAST(P0.seconds as bigint) as seconds
FROM
(
SELECT
seconds
FROM
TableName
WHERE
ISNUMERIC(seconds) = 1
) P0
我覺得你的代碼是正確的。如果運行以下代碼,它將轉換字符串'60',該字符串被視爲varchar,並返回整數60,如果其中包含字符串的整數包含字符串,則返回該值。
select CONVERT(bigint,'60') as seconds
,並返回
60
你檢查數據,以確保在你轉換字段中的值實際上是轉換成int? –
似乎你的varchar之一是不可兌換的... –
我讓它有一個null, - 數字和正數!但我做了isnull(秒,0),我仍然有相同的問題 轉換(bigint,ISNULL(ts.TimeInSeconds,0))AS秒 – Jaylen