سؤال

أقوم بتحويل SQL من Teradata إلى SQL Server

في Teradata، لديهم الشكل

SELECT col1, col2
FROM table1
INTO @variable1, @variable2

في SQL Server، وجدت

SET @variable1 = (
SELECT col1 
FROM table1
);

هذا يسمح فقط بعمود/متغير واحد لكل عبارة.كيفية تعيين متغيرين أو أكثر باستخدام عبارة SELECT واحدة؟

هل كانت مفيدة؟

المحلول

SELECT @variable1 = col1, @variable2 = col2
FROM table1

نصائح أخرى

SELECT @var = col1,
       @var2 = col2
FROM   Table

فيما يلي بعض المعلومات المثيرة للاهتمام حول SET / SELECT

  • SET هو معيار ANSI لتعيين المتغير، SELECT ليس كذلك.
  • يمكن لـ SET تعيين متغير واحد فقط في وقت واحد ، يمكن SELECT إجراء مهام متعددة في وقت واحد.
  • في حالة التعيين من استعلام، يمكن لـ SET تعيين قيمة عددية فقط.إذا قام الاستعلام بإرجاع قيم/صفوف متعددة ، فسيرفع تعيين خطأ.سيقوم SELECT بتعيين إحدى القيم للمتغير وإخفاء حقيقة أنه تم إرجاع قيم متعددة (لذلك من المحتمل ألا تعرف أبدًا سبب حدوث خطأ ما في مكان آخر - يمكنك الاستكشاف في استكشاف الأخطاء وإصلاحها)
  • عند التعيين من استعلام إذا لم يتم إرجاع أي قيمة ، سيتم تعيين تعيين NULL ، حيث لن يقوم SELECT بإجراء المهمة على الإطلاق (لذلك لن يتم تغيير المتغير من القيمة السابقة)
  • بقدر فروق السرعة - لا توجد اختلافات مباشرة بين المجموعة واختيار.ومع ذلك ، فإن قدرة SELECT على إجراء مهام متعددة في طلقة واحدة تمنحها ميزة سرعة بسيطة على المجموعة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top