يجب أن يؤدي العمود المحسوب إلى سلسلة
-
20-09-2019 - |
سؤال
هذه هي مجموعة من قاعدة البيانات الخاصة بي.
يتم إعلان كلا 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 وقم بتعيين خاصية عمود محسوبة
كما يمكنك استخدام هذا البرنامج النصي التالي
CREATE TABLE [dbo].[tbl](
[col1] [varchar](50) NOT NULL,
[col2] [varchar](50) NOT NULL,
[ComputedColumn] AS ((CONVERT([varchar],[col1],(0))+'-')+CONVERT([varchar],[col2],(0)))
)