我有幾個數據庫,我試圖用相同的SQL代碼在我的網站上查詢。我將通過URL使用的列名/表格傳遞給新頁面。例如:在不知道列類型的情況下將NULL值轉換爲「UNKNOWN」
/some/url.php?table=tableName&c1=ColumnOne&c2=ColumnTwo&c3=ColumnThree&n=3
我有幾個這些URL的所有鏈接到同一頁面(但具有不同的表名和列)。在接下來的頁面中,PHP代碼將是這樣的
for ($j = 1; $j <= $n; $j++) {
// Since the number of column variables varies (there could be c1 and c2, or c1 -> c5), you need to save this part of the query in a variable
$variables .= ${'c' . $j} . ', ';
}
SELECT $variables
FROM db.dbo.tableName
所以這3列中的實際查詢將
SELECT ColumnOne, ColumnTwo, ColumnThree
FROM db.dbo.tableName
的問題是,一些列的是浮動的,有些是爲nvarchar(254)。在float列中,空值爲0.在nvarchar(254)列中,空值僅爲NULL。我需要nvarchar(254)列中的NULL值爲「UNKNOWN」,浮點列中的0值也是「UNKNOWN」。
這是我的意思的一個例子。 ColumnOne和ColumnTwo是float,而ColumnThree是nvarchar(254)。
---------------------------------------------
|ColumnOne |ColumnTwo |ColumnThree |
---------------------------------------------
|0 |142563 |Insert |
---------------------------------------------
|1 |348 |Some |
---------------------------------------------
|2 |2535 |NULL |
---------------------------------------------
|3 |0 |Value |
---------------------------------------------
|0 |82536 |NULL |
---------------------------------------------
|5 |0 |Here |
---------------------------------------------
這是我想它看起來像
---------------------------------------------
|ColumnOne |ColumnTwo |ColumnThree |
---------------------------------------------
|UNKNOWN |142563 |Insert |
---------------------------------------------
|1 |348 |Some |
---------------------------------------------
|2 |2535 |UNKNOWN |
---------------------------------------------
|3 |UNKNOWN |Value |
---------------------------------------------
|UNKNOWN |82536 |UNKNOWN |
---------------------------------------------
|5 |UNKNOWN |Here |
---------------------------------------------
我已經試過這
SELECT ISNULL(ColumnOne, 'UNKNOWN'), ISNULL(ColumnTwo, 'UNKNOWN'), ISNULL(ColumnThree, 'UNKNOWN')
FROM db.dbo.tableName
不過,我得到這個錯誤:Error converting data type varchar to float
有人可以幫我嗎?這將不勝感激!
編輯:我知道,0值轉換爲UNKNOWN浮法列,我需要做的這
(CASE WHEN ColumnOne = 0 THEN 'UNKNOWN' ELSE CAST(ColumnOne AS varchar(255)) END)
和空值轉換爲UNKNOWN在爲nvarchar(254)列,我需要這樣做
ISNULL(ColumnOne, 'UNKNOWN')
我只是不知道列類型。有沒有辦法做一個CASE語句來檢查列類型,然後使用適當的?
這聽起來像是那種呈現問題,應用程序應該處理,而不是數據庫。 – HABO