Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL:Преобразуване на цяло число в шестнадесетичен низ?

Има вградена функция за генериране на шестнадесетични низове от двоични стойности

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(BINARY(3), 255))

Имате нужда от binary(3) за да осигурите правилната дължина на изходния низ
Това е грешно. Получавате 4 шестнадесетични цифри, защото 0 и 255 тук са 4 байта int стойности

SELECT
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 0)),
    '#' + sys.fn_varbintohexstr(CONVERT(varBINARY(8), 255))

Актуализация от октомври 2017 г.:

Преобразуването вече е вградено в SQL Server (от 2008 г.!!), така че можем просто да използваме CONVERT

SELECT '#' + CONVERT(char(6), CONVERT(BINARY(3), 2570841), 2)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изключа дните на уикенда в заявка на SQL Server?

  2. SQL Server не използва индекс, сравняващ datetime с not null

  3. Как да задам име на таблица в динамична SQL заявка?

  4. Изберете редове, където стойността на колоната е променена

  5. Замяна на множество символи в низ в SQL Server (T-SQL)