我正在進行在線SQL練習,並嘗試將一系列整數轉換爲二進制數,而不是前導0.所使用的數據庫引擎是MS SQL Server。在SQL Server中將整數轉換爲二進制格式
以下是原始表:
trip_no
1100
1101
1123
1124
1145
1146
1181
1182
1187
1188
1195
1196
7771
7772
7773
7774
7775
7776
7777
7778
8881
8882
和正確的輸出應該是這樣的:
trip_no trip_no_bi
1100 10001001100
1101 10001001101
1123 10001100011
1124 10001100100
1145 10001111001
1146 10001111010
1181 10010011101
1182 10010011110
1187 10010100011
1188 10010100100
1195 10010101011
1196 10010101100
7771 1111001011011
7772 1111001011100
7773 1111001011101
7774 1111001011110
7775 1111001011111
7776 1111001100000
7777 1111001100001
7778 1111001100010
8881 10001010110001
8882 10001010110010
我試圖用cast((trip_no) as varbinary)
語法,但結果卻是怪異。例如,當我用cast()
功能轉換1100
上鍛鍊的網頁,它返回L
,剩下的輸出是這樣的:
trip_no
1100 L
1101 M
1123 c
1124 d
1145 y
1146 z
1181 ќ
1182 ћ
1187 Ј
1188 ¤
1195 «
1196 ¬
7771 [
7772 \
7773 ]
7774 ^
7775 _
7776 `
7777 a
7778 b
8881 "±
8882 "І
而當我想這在MS SQL Server Management Studio中,它返回:
trip_no trip_no_bi
1100 0x0000044C
1101 0x0000044D
1123 0x00000463
1124 0x00000464
1145 0x00000479
1146 0x0000047A
1181 0x0000049D
1182 0x0000049E
1187 0x000004A3
1188 0x000004A4
1195 0x000004AB
1196 0x000004AC
7771 0x00001E5B
7772 0x00001E5C
7773 0x00001E5D
7774 0x00001E5E
7775 0x00001E5F
7776 0x00001E60
7777 0x00001E61
7778 0x00001E62
8881 0x000022B1
8882 0x000022B2
我無法弄清楚這是怎麼發生的。請幫忙。
與在這個環節要求的情況: SQL Server Convert integer to binary string
我沒有要求的Cuz鍛鍊可重複使用的解決方案只允許一個步驟的解決方案...
由於問題提到期望的輸出是its binary number representation (without leading zeroes)
,我想它是INT
或VARCHAR
。
也請忽略現在的領先0的東西,因爲它很容易擺脫它。
我應該更清楚這個:看到了第一個答案之後,我意識到這個問題本質上是要求對一系列數字和字符串之間的轉換,用公式來獲得查詢中的二進制數。我不認爲它是要求二進制轉換函數,但它要求「計算原始trip_no的二進制數,顯示它並修剪前導0」。
[SQL Server的整數轉換成二進制字符串(HTTP的可能重複: //堆棧溢出。com/questions/127116/sql-server-convert-integer-to-binary-string) –
這不是'前導零',它是Exadecimal的符號,前綴是「0x」。這裏有兩件事要記住:A)數據的實際數據類型B)SSMS對數據的可視表示。輸出顯示不指定數據類型 –
您在鏈接中提供的#1解決方案提供了一個可執行的查詢進行轉換。但我想知道是否可以通過一個聲明進行轉換。第二個對於這個目的來說太複雜了。 @RickS – malamoji