سؤال

هذه هي مجموعة من قاعدة البيانات الخاصة بي.

يتم إعلان كلا Col1 و Col2 كـ int.

يضيف ComputedColumn حاليًا الأعمدة 1 و 2 ، على النحو التالي ...

col1  col2  ComputedColumn
1     2     3
4     1     5

بدلاً من هذا ، يجب أن ينضم ComputedColumn إلى العمودان 1 و 2 (بما في ذلك '-' الشخصية في الوسط) على النحو التالي ...

col1  col2  ComputedColumn
1     2     1-2
4     1     4-1

إذن ، ما هو بناء الجملة الصحيح؟

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

المحلول

من المحتمل أن تحدد عمودك المحسوب على أنه col1+col2. محاولة CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX)) في حين أن.

أو إذا كنت تفضل ذلك ، يمكنك استبدال NVARCHAR(MAX) مع NVARCHAR(10) أو طول مختلف من اختيارك.

نصائح أخرى

create table TableName
(
    col1 int,
    col2 int,
    ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2)
)

ضع في اعتبارك أنه إذا كانت أي من القيمة null ثم نتيجة ComputedColumn سيكون أيضا null (باستخدام الترتيب الافتراضي والإعدادات)

بسيط:

SELECT ComputedColumn = convert(varchar, col1) + '-' + convert(varchar, col2)
  FROM Table
SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn

"+" هو كل من إضافة وطابع التسلس. يمكنك التحويل بشكل صريح ، ولكن في هذه الحالة ، بما في ذلك "-" في الوسط يجب أن يتسبب في تحويل ضمني.

قم أولاً بإنشاء الجدول في وضع التصميم

أضف عمود 2 كـ Col1 و Col2

أضف عمودًا آخر ComputedColumn وقم بتعيين خاصية عمود محسوبة

enter image description here

كما يمكنك استخدام هذا البرنامج النصي التالي

CREATE TABLE [dbo].[tbl](
[col1] [varchar](50) NOT NULL,
[col2] [varchar](50) NOT NULL,
[ComputedColumn]  AS ((CONVERT([varchar],[col1],(0))+'-')+CONVERT([varchar],[col2],(0)))

)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top