Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Trọng lượng / số lượng dân số Hamming trong T-SQL

Bạn có thể sử dụng bảng trợ giúp với các trọng số Hamming được tính toán trước cho các số nhỏ, như byte, sau đó chia nhỏ giá trị cho phù hợp, tham gia vào bảng trợ giúp và nhận tổng các trọng số Hamming từng phần làm trọng số Hamming của giá trị:

-- define Hamming weight helper table
DECLARE @hwtally TABLE (byte tinyint, hw int);
INSERT INTO @hwtally (byte, hw) VALUES (0, 0);
INSERT INTO @hwtally (byte, hw) SELECT   1 - byte, 1 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT   3 - byte, 2 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT   7 - byte, 3 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT  15 - byte, 4 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT  31 - byte, 5 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT  63 - byte, 6 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT 127 - byte, 7 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT 255 - byte, 8 - hw FROM @hwtally;

-- calculate
WITH split AS (
  SELECT SUBSTRING(@value, number, 1) AS byte
  FROM master.dbo.spt_values
  WHERE type = 'P' AND number BETWEEN 1 AND LEN(@value)
)
SELECT
  Value = @value,
  HammingWeight = SUM(t.hw)
FROM split s
  INNER JOIN @hwtally t ON s.byte = t.byte


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cấp quyền truy cập người dùng msdb vào hồ sơ thư cơ sở dữ liệu trong SQL Server (T-SQL)

  2. Hệ thống quản lý cơ sở dữ liệu quan hệ và cơ sở dữ liệu (RDBMS) là gì

  3. Cách bao gồm các kết quả gắn với vị trí cuối cùng khi sử dụng mệnh đề TOP trong SQL Server

  4. com.microsoft.sqlserver.jdbc.SQLServerException:Kết nối TCP / IP với máy chủ lưu trữ cục bộ, cổng 1433 không thành công

  5. Trả lại tất cả các nhóm tệp cho cơ sở dữ liệu hiện tại trong SQL Server