Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

टी-एसक्यूएल में हैमिंग वजन/जनसंख्या गिनती

आप बाइट्स की तरह छोटी संख्याओं के लिए पूर्व-परिकलित हैमिंग वज़न के साथ एक सहायक तालिका का उपयोग कर सकते हैं, फिर उसके अनुसार मान को विभाजित कर सकते हैं, सहायक तालिका में शामिल हो सकते हैं और मान के हैमिंग वज़न के रूप में आंशिक हैमिंग वज़न का योग प्राप्त कर सकते हैं:

-- 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. टी-एसक्यूएल संग्रहीत प्रक्रिया निष्पादन 'परमाणु' है?

  2. SQL सर्वर कनेक्शन गिनती की कोई सीमा?

  3. SQL सिंटैक्स का उपयोग करके मैं प्राथमिक कुंजी बाधा को कैसे बदल सकता हूं?

  4. केवल संग्रहीत प्रक्रिया के माध्यम से INSERT को बाध्य करें

  5. हर घंटे एसक्यूएल सर्वर में संग्रहीत प्रक्रिया कैसे चलाएं?