Sql-Server
REPLACE() 函式接受並返回非字元數據類型
Microsoft 文件表明REPLACE() 函式只接受並返回字元數據類型。但是,這些工作沒有錯誤:
SELECT REPLACE(123456, 'X', 'Y') ; SELECT REPLACE(CAST(123456 AS INT), 'X', 'Y') ;
此外,您可以將結果視為 INT,這表明該函式保留了參數的數據類型而不嘗試對其進行轉換:
SELECT REPLACE(123456, 'X', 'Y') / 3 ;
Microsoft 文件中沒有說明什麼?
為了補充 Erik 在他的評論中所說的內容,無論您想將參數顯式定義為哪種數據類型,函式內部參數的定義都
REPLACE()
被定義為採用string_expression
.這意味著,無論如何,它都會將參數隱式轉換為基於字元串的數據類型。該數據類型取決於實際傳入的內容 - SQL 引擎有一些邏輯和層次結構,它遵循可以隱式轉換為另一種類型的內容,這可能遵循以下數據類型轉換圖表:
如果您嘗試了無法隱式轉換的不兼容類型,例如
XML
對象,則該REPLACE()
函式會出錯。