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

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

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

問(wèn)題描述

限時(shí)送ChatGPT賬號(hào)..

我最近在一個(gè)程序中發(fā)現(xiàn)了一個(gè)有趣的錯(cuò)誤,該程序使用他們的私鑰為特定客戶選擇數(shù)據(jù).考慮以下幾點(diǎn):

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

密鑰在請(qǐng)求時(shí)提供,并在查詢之前進(jìn)行了適當(dāng)?shù)那謇?但是,如果沒(méi)有提供密鑰(應(yīng)該在之前被捕獲;忽略它),將產(chǎn)生類似于以下內(nèi)容的查詢:

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

它會(huì)從 customers-table 返回一行 - 盡管它存儲(chǔ)了一個(gè)正確的字符串鍵,例如在第一個(gè)示例中.

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).

我的猜測(cè)是這與松散比較有關(guān).導(dǎo)致此問(wèn)題的原因是什么,如何正確避免?

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 會(huì)嘗試將數(shù)據(jù)強(qiáng)制轉(zhuǎn)換為可比較的類型.在這種情況下,它會(huì)嘗試將字符串轉(zhuǎn)換為數(shù)字.任何無(wú)法理解的字符串默認(rèn)為 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'

看到這一點(diǎn).

將您的查詢與 '0' 而不是 0 進(jìn)行比較可以解決問(wèn)題.

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

示例 SQLFiddle

這篇關(guān)于MySQL 松散比較,在具有整數(shù)值的 varchar 字段上的 WHERE 產(chǎn)生意外結(jié)果的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

相關(guān)文檔推薦

What SQL Server Datatype Should I Use To Store A Byte[](我應(yīng)該使用什么 SQL Server 數(shù)據(jù)類型來(lái)存儲(chǔ)字節(jié) [])
Interpreting type codes in sys.objects in SQL Server(解釋 SQL Server 中 sys.objects 中的類型代碼)
Typeorm Does not return all data(Typeorm 不返回所有數(shù)據(jù))
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轉(zhuǎn)換為“2016-07-01 13:12:22小時(shí)格式?)
MS SQL: Should ISDATE() Return quot;1quot; when Cannot Cast as Date?(MS SQL:ISDATE() 是否應(yīng)該返回“1?什么時(shí)候不能投射為日期?)
主站蜘蛛池模板: 日韩一区二区三区在线观看视频 | 欧美精品综合在线 | 久久综合一区 | 成人午夜av | 91精品国产综合久久久久蜜臀 | 精品国产乱码久久久久久图片 | 青青草原综合久久大伊人精品 | 国产亚洲成av人在线观看导航 | 日韩欧美国产成人一区二区 | 中文字幕一区在线 | 亚洲精品电影网在线观看 | 久久久久久久久国产 | 国产精品99久久久精品免费观看 | 亚洲欧美日韩精品久久亚洲区 | 91久久久精品国产一区二区蜜臀 | 国产观看| 欧美亚洲另类丝袜综合网动图 | 免费观看成人av | 综合网视频 | 特黄小视频 | 国产一区二区中文字幕 | 日韩精品视频一区二区三区 | 成人不卡视频 | 欧美成人免费在线 | 欧美日韩亚洲国产 | 夜夜精品浪潮av一区二区三区 | 久久免费福利 | 亚洲传媒在线 | 一区二区三区电影在线观看 | 久草电影网 | gogo肉体亚洲高清在线视 | 亚洲午夜视频 | 国产精品自拍视频 | 国产在线精品一区二区 | 成人欧美一区二区 | 天堂视频免费 | 精品国产一区二区国模嫣然 | 一级毛片在线看 | 国产九九精品视频 | 国产精品不卡视频 | 91精品国产综合久久久久久丝袜 |