sqlnosuchcolumn
㈠ sql語句查詢出現錯誤:unknown column,但是語句欄位確實存在。很多語句都有這個錯誤
是多表查詢,其中兩個以上的表有同名的欄位,在語句中沒指明哪個表。
所以是unknowncolumn,SQL不知道是哪個表的欄位。
在檢查SQL語句完全無誤後,可以檢查下表中的數據類型設置或者字元編碼格式,比如在出現這個錯誤時,常常因為資料庫使用的是gbk格式,但是欄位是utf8編碼格式的,表中欄位編碼格式不同,導致了這個錯誤。
(1)sqlnosuchcolumn擴展閱讀:
SQL是操作資料庫數據的結構化查詢語言,網頁的應用數據和後台資料庫中的數據進行交互時會採用SQL。而SQL注入是將Web頁面的原URL、表單域或數據包輸入的參數,修改拼接成SQL語句,傳遞給Web伺服器,進而傳給資料庫伺服器以執行資料庫命令。
如Web應用程序的開發人員對用戶所輸入的數據或cookie等內容不進行過濾或驗證(即存在注入點)就直接傳輸給資料庫,就可能導致拼接的SQL被執行,獲取對資料庫的信息以及提權,發生SQL注入攻擊。
㈡ SQL語句中column的意思和常用法 是怎麼的 謝謝 麻煩解釋下
sql:column() 函數 (XQuery)
如主題在 XML 內部綁定關系數據中所述,當使用 XML 數據類型方法在 XQuery 內顯示關系值時,可以使用 sql:column(() 函數。
例如,使用 query() 方法(XML 數據類型)對存儲在變數或 xml 類型列中的 XML 實例指定查詢。有時,您可能還希望查詢使用其他非 XML 列中的值同時引入關系數據和 XML 數據。若要達到此目的,請使用 sql:column() 函數。
SQL 值將映射到相應的 XQuery 值,其類型將為 XQuery 基類型,等效於相應的 SQL 類型。
語法
sql:column("columnName")
注釋
請注意,引用在 XQuery 的 sql:column() 函數中指定的列是指引用正在處理的行中的列。
在 SQL Server 中,僅可在 XML-DML 插入語句源表達式的上下文中引用 xml 實例,否則無法引用 xml 類型的列或 CLR 用戶定義類型的列。
JOIN 操作不支持 sql:column() 函數。可改用 APPLY 操作。
示例
A. 使用 sql:column() 檢索 XML 中的關系值
在構造 XML 時,下面的示例說明了如何從非 XML 關系列中檢索值以綁定 XML 數據和關系數據。
該查詢將構造如下形式的 XML 內容:
復制代碼
<Proct ProctID="771" ProctName="Mountain-100 Silver, 38" ProctPrice="3399.99" ProctModelID="19"
ProctModelName="Mountain 100" />
請注意構造的 XML 中的下列內容:
從 Proct 表中獲取的 ProctID、ProctName 和 ProctPrice 屬性值。
從 ProctModel 表中檢索的 ProctModelID 屬性值。
若要使查詢更加有趣,可以從 xml 類型列 CatalogDescription 中獲取 ProctModelName 屬性值。由於未存儲所有產品型號的 XML 產品型號目錄信息,因此將使用 if 語句檢索該值(如果存在)。
復制代碼
SELECT P.ProctID, CatalogDescription.query('
declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProctModelDescription";
<Proct
ProctID= "{ sql:column("P.ProctID") }"
ProctName= "{ sql:column("P.Name") }"
ProctPrice= "{ sql:column("P.ListPrice") }"
ProctModelID= "{ sql:column("PM.ProctModelID") }" >
{ if (not(empty(/pd:ProctDescription))) then
attribute ProctModelName { /pd:ProctDescription[1]/@ProctModelName }
else
()
}
</Proct>
') as Result
FROM Proction.ProctModel PM, Proction.Proct P
WHERE PM.ProctModelID = P.ProctModelID
AND CatalogDescription is not NULL
ORDER By PM.ProctModelID
請注意上述查詢的以下方面:
由於從兩個不同的表檢索值,因此 FROM 子句指定兩個表。WHERE 子句中的條件用於篩選結果,並只檢索產品型號具有目錄說明的產品。
XQuery Prolog 中的關鍵字 namespace 用於定義查詢主體中使用的 XML 命名空間前綴「pd」。請注意,表別名(「P」和「PM」)是在查詢本身的 FROM 子句中定義的。
sql:column() 函數用於將非 XML 值引入 XML。
下面是部分結果:
復制代碼
ProctID Result
-----------------------------------------------------------------
771 <Proct ProctID="771" ProctName="Mountain-100 Silver, 38"
ProctPrice="3399.99" ProctModelID="19"
ProctModelName="Mountain 100" />
...
下面的查詢構造了包含產品特定信息的 XML。此信息包括 ProctID、ProctName、ProctPrice 以及屬於特定產品型號 (ProctModelID=19) 的所有產品的 ProctModelName(如果有)。然後,將 XML 分配給 xml 類型的 @x 變數。
復制代碼
declare @x xml
SELECT @x = CatalogDescription.query('
declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProctModelDescription";
<Proct
ProctID= "{ sql:column("P.ProctID") }"
ProctName= "{ sql:column("P.Name") }"
ProctPrice= "{ sql:column("P.ListPrice") }"
ProctModelID= "{ sql:column("PM.ProctModelID") }" >
{ if (not(empty(/pd:ProctDescription))) then
attribute ProctModelName { /pd:ProctDescription[1]/@ProctModelName }
else
()
}
</Proct>
')
FROM Proction.ProctModel PM, Proction.Proct P
WHERE PM.ProctModelID = P.ProctModelID
And P.ProctModelID = 19
select @x
㈢ SQL 為什麼我的column失效了
你的sql語句中有一列數據的列名(欄位)是在資料庫中沒有的,估計是你的列名打錯了或者資料庫中根本沒有這個欄位。仔細檢查一下吧!
希望能幫到你!