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

ऑर्डर बाय का उपयोग करते समय COALESCE के साथ अजीब TSQL व्यवहार

आप संयोजन पर निर्भर नहीं रह सकते जैसे:

SELECT @result = COALESCE(@result + ',', '') + [Title]
FROM Episodes
...

निष्पादन योजना और अभिव्यक्ति स्थान पर निर्भर कुल संयोजन प्रश्नों के परिणाम

सीटीई/अस्थायी तालिका/निष्पादन योजना पर निर्भर उदाहरण आपको अलग-अलग परिणाम मिलेंगे:

SqlFiddleDemo

DECLARE @text VARCHAR(MAX) = ''
       ,@text2 VARCHAR(MAX) = '';

SELECT CAST(ROW_NUMBER() OVER (ORDER BY name) AS INT) AS number 
INTO #numbers 
FROM master..spt_values 


;WITH numbers (number)
AS
(
    SELECT CAST(ROW_NUMBER() OVER (ORDER BY name) AS INT) AS number
    FROM master..spt_values 
),a AS
(
    SELECT number FROM numbers WHERE number < 10
)
SELECT      @text = @text + LTRIM(STR(a.number))
FROM        a
ORDER BY    a.number DESC


;WITH numbers (number)
AS
(
    SELECT number FROM #numbers
),
a
AS
(
    SELECT number FROM numbers WHERE number < 10
)
SELECT      @text2 = @text2 + LTRIM(STR(a.number))
FROM        a
ORDER BY    a.number DESC

SELECT @text, @text2;

मैंने नमूना बनाया और आपकी पहली क्वेरी काम कर रही है SqlFiddleDemo . लेकिन आपका समाधान निष्पादन योजना पर अत्यधिक निर्भर है।

का इस्तेमाल करें एक्सएमएल + स्टफ इसके बजाय संयोजन के लिए।




  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. केवल लोकलहोस्ट का उपयोग करके लोकलहोस्ट\sqlexpress को इंगित करें

  3. एक प्रश्न करने की तुलना में धीमी गति से विचारों पर पूछताछ कर रहा है?

  4. SQL सर्वर का परिचय

  5. SQL सर्वर डेटाबेस में सक्षम / अक्षम चेक बाधाओं की सूची कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 86