تحديث بناء جملة SQL - إعادة تعيين الحقل لنفسه باستخدام سلسلة - SQLServer 2005
-
06-07-2019 - |
سؤال
أتلقى خطأً في استخدام بناء الجملة هذا:
update table set field1 = (field1+' - '+field2) where field1 = 'somevalue'
إنه ليس سعيدًا جدًا بفعل هذا من أجلي.أعلم أن "+" للتسلسل يعمل في عبارات التحديد الخاصة بي، لذا فإن هذا هو بناء الجملة الصحيح.هناك شيء آخر يلعب هنا...وحاولت إزالة الأقواس أيضًا.
مثال:
إذا كان الحقل 1 = "الجبن" وfield2 = "ConQueso"
ثم يجب أن يقوم التحديث الخاص بي بتعيين كافة السجلات حيث field1 = 'Cheese' إلى field1 = 'Cheese - ConQueso'
يحرر:
كلا الحقلين عبارة عن حقول نصية
المحلول
من الصعب معرفة ذلك دون تقديم الخطأ، ولكن ربما يتجاوز حجم البيانات المدمجة الحقل 1.
على سبيل المثال، إذا field1
هو varchar(50) و field2
هو varchar(50)، يمكن أن يصل المجموع الإجمالي إلى 103 أحرف بما في ذلك حرفك ' - '
, ، والذي يتجاوز 50 حرفًا في الحقل 1.
نصائح أخرى
(يحرر: text
;لكن يعمل بشكل جيد varchar(max)
)
يعمل بشكل جيد هنا (SQL2005):
create table [table] (
field1 varchar(max) not null,
field2 varchar(max) not null)
insert [table] values ('somevalue','abc')
insert [table] values ('other','def')
update [table] set field1 = (field1+' - '+field2) where field1 = 'somevalue'
select * from [table]
المخرجات:
field1 field2
-------------------- --------------------
somevalue - abc abc
other def
لا تنتمي إلى StackOverflow