Я работаю над онлайн-упражнением 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
Я не прошу для многократного использования решения ПОТОМУ упражнения позволяет лишь один шаг решения ...
Поскольку вопрос отметил, что желаемый результат равен its binary number representation (without leading zeroes)
, я думаю, это либо INT
, либо VARCHAR
.
Также, пожалуйста, игнорируйте ведущую вещь 0 прямо сейчас, так как ее легко избавиться.
Я должен был быть более ясно по этому вопросу: после просмотра первого ответа я понял, что это вопрос, по существу, прошу серию преобразования между числами и строками, с формулой для получения двоичного числа внутри запроса. Я не думаю, что он просит функцию двоичного преобразования, но он просит «Рассчитать двоичный номер оригинала trip_no, представить его и обрезать ведущее 0».
Возможный дубликат [SQL Преобразовать сервера целого числа в двоичной строки] (HTTP: //переполнение стека.com/questions/127116/sql-server-convert-integer-to-binary-string) –
, который не является «ведущим нулем», обозначающим Exadecimal, а префикс - «0x». Здесь необходимо иметь в виду две вещи: A) фактический тип данных ваших данных; B) визуальное представление этих данных с помощью SSMS. Выходной дисплей не диктует тип данных –
Решение №1, которое вы предоставили в ссылке, дало исполняемый запрос для преобразования. Но мне было интересно, можно ли конвертировать через одно утверждение. Вторая для них слишком сложная. @RickS – malamoji