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