久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

MySQL 松散比較,在具有整數值的 varchar 字段上的

MySQL loose comparison, WHERE on varchar field with integer value yields unexpected result(MySQL 松散比較,在具有整數值的 varchar 字段上的 WHERE 產生意外結果)
本文介紹了MySQL 松散比較,在具有整數值的 varchar 字段上的 WHERE 產生意外結果的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我最近在一個程序中發現了一個有趣的錯誤,該程序使用他們的私鑰為特定客戶選擇數據.考慮以下幾點:

I recently discovered an interesting bug in a program, which selects data for a specific customer using their private key. Consider the following:

SELECT `id` FROM (`customers`) WHERE `authenticationKey` = '#09209!ko2A-' LIMIT 1

密鑰在請求時提供,并在查詢之前進行了適當的清理.但是,如果沒有提供密鑰(應該在之前被捕獲;忽略它),將產生類似于以下內容的查詢:

The key is provided at request-time, and properly sanitized before put to query. However, failing to providing a key (which should be caught before; ignore that), would yield a query similar to the following:

SELECT `id` FROM (`customers`) WHERE `authenticationKey` = 0 LIMIT 1

它會從 customers-table 返回一行 - 盡管它存儲了一個正確的字符串鍵,例如在第一個示例中.

Which would return a row from the customers-table - despite it having a proper, string, key stored, such as in the first example.

authenticationKey 字段的類型為 VARCHAR(1024).

我的猜測是這與松散比較有關.導致此問題的原因是什么,如何正確避免?

My guess is that this has something to do with loose comparasion. What is causing this problem, and how can it properly be avoided?

推薦答案

MySQL 會嘗試將數據強制轉換為可比較的類型.在這種情況下,它會嘗試將字符串轉換為數字.任何無法理解的字符串默認為 0.

MySQL will try and coerce data to a comparable type. I this case it will try and convert strings to numbers. Any strings that it can't make sense of default to 0.

select 0 = 'banana'

看到這一點.

將您的查詢與 '0' 而不是 0 進行比較可以解決問題.

Making your query compare to '0' instead of 0 would fix it.

示例 SQLFiddle

這篇關于MySQL 松散比較,在具有整數值的 varchar 字段上的 WHERE 產生意外結果的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

What SQL Server Datatype Should I Use To Store A Byte[](我應該使用什么 SQL Server 數據類型來存儲字節 [])
Interpreting type codes in sys.objects in SQL Server(解釋 SQL Server 中 sys.objects 中的類型代碼)
Typeorm Does not return all data(Typeorm 不返回所有數據)
Typeorm .loadRelationCountAndMap returns zeros(Typeorm .loadRelationCountAndMap 返回零)
How to convert #39;2016-07-01 01:12:22 PM#39; to #39;2016-07-01 13:12:22#39; hour format?(如何將“2016-07-01 01:12:22 PM轉換為“2016-07-01 13:12:22小時格式?)
MS SQL: Should ISDATE() Return quot;1quot; when Cannot Cast as Date?(MS SQL:ISDATE() 是否應該返回“1?什么時候不能投射為日期?)
主站蜘蛛池模板: 天天操夜夜骑 | 亚洲天堂影院 | 欧洲视频一区 | 欧美日韩国产在线观看 | 精品综合在线 | 中文字幕在线观看日韩 | 国产欧美性成人精品午夜 | 午夜精品视频在线观看 | 久久久久久高清 | 国产午夜精品理论片a大结局 | 国产高清在线观看 | 拍真实国产伦偷精品 | www.久久国产精品 | 久久精品黄色 | a免费视频| 久久久久久国模大尺度人体 | 操久久| 视频在线一区二区 | 久久精品99 | 天天草天天射 | 亚洲一区二区三区在线视频 | 亚洲 欧美 精品 | h视频在线观看免费 | 成人午夜精品 | 色婷婷精品国产一区二区三区 | 欧美久久一区二区 | 亚洲一区在线播放 | 精品久久电影 | 91精品久久久久久久久久 | 日韩在线免费视频 | 黄色大片视频 | 久操av在线 | 草樱av| 日日夜夜av | 欧美色综合一区二区三区 | 一区二区三区四区日韩 | 欧美一区二区三区精品 | 欧美精品二区三区 | 国产97在线看 | 精精国产xxxx视频在线播放 | 国产乱一区二区三区视频 |