如何利用MySQL查詢varbinary中存儲(chǔ)的數(shù)據(jù)
如何利用MySQL查詢varbinary中存儲(chǔ)的數(shù)據(jù)?這里記錄下例子
SELECT ORD(SUBSTRING(`binary_column`, 1, 1)) AS converted_value FROM `TableName`;上述語句中,SUBSTRING(binary_column, 1, 1) 會(huì)提取字段中的第一個(gè)字節(jié)。然后,ORD() 函數(shù)會(huì)將該字節(jié)轉(zhuǎn)換為對(duì)應(yīng)的 ASCII 值,因?yàn)?unpack() 函數(shù)返回的是一個(gè)字節(jié)流。
這樣,你將得到一個(gè)名為 converted_value 的列,其中存儲(chǔ)了通過 MySQL 查詢得到的值為 1 的整數(shù)。
請(qǐng)注意,這種方法假設(shè)字段中的值是按照字節(jié)順序存儲(chǔ)的。如果存儲(chǔ)方式不同,可能需要相應(yīng)地調(diào)整提取和轉(zhuǎn)換的邏輯。
用 php的 unpack 函數(shù)解析的形式,比如上面的例子,要解出一個(gè)整型(int32)可以這樣表示,unpack('Iintval', $bindata)
mysql中varbinary什么意思_sql中varbinary 是什么數(shù)據(jù)類型varbinary 類型和char與varchar類型是相似的,只是他們存儲(chǔ)的是32313133353236313431303231363533e59b9ee7ad9431333431363564二進(jìn)制數(shù)據(jù),也就是說他們是包含字節(jié)流而不是字符流,他們有二進(jìn)制字符的集合和順序,他們的對(duì)比,排序是基于字節(jié)的數(shù)值進(jìn)行的
binary與varbinary的最大長度和char與varchar是一樣的,只不過他們是定義字節(jié)長度,而char和varchar對(duì)應(yīng)的是字符長度。Varbinary是一個(gè)可以改變長度的二進(jìn)制數(shù)據(jù)。
Varbinary[(n)] 是 n 位變長度的二進(jìn)制數(shù)據(jù)。其中,n 的取值范圍是從 1 到 8000。其存儲(chǔ)窨的大小是 n + 4個(gè)字節(jié),不是n 個(gè)字節(jié)。
varbinary在插入不會(huì)去填補(bǔ)0x00字節(jié),查詢的時(shí)候也不會(huì)丟棄任何字節(jié),在比較的時(shí)候,所有的字節(jié)都是有效的,并且0x00
擴(kuò)展資料:
varbinary( n | max):可變長度,n 的取值范圍為 1 至 8,000,max 是指最大存儲(chǔ)空間是 2^31-1 個(gè)字節(jié),即最大4GB;
在將數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)時(shí),SQL Server會(huì)對(duì)生成的二進(jìn)制數(shù)據(jù)進(jìn)行填充或截?cái)啵敿?xì)的規(guī)則是:
1、填充(或擴(kuò)展)的二進(jìn)制數(shù)據(jù)是16進(jìn)制的0x00的整數(shù)倍,這就是說,填充的字節(jié)中每一個(gè)bit都是0;
2、將字符類型轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)時(shí),在數(shù)據(jù)的右側(cè)填充或截?cái)鄶?shù)據(jù),填充數(shù)值是0x00;
3、將其他類型數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)時(shí),在數(shù)據(jù)的左側(cè)填充或截?cái)鄶?shù)據(jù),填充數(shù)值是0x00;在截?cái)鄶?shù)據(jù)時(shí),保留低位的數(shù)據(jù),將高位數(shù)值截?cái)唷?/p>
到此這篇關(guān)于MySQL查詢varbinary的數(shù)值的文章就介紹到這了,更多相關(guān)mysql查詢varbinary內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
