تحديث بناء جملة SQL - إعادة تعيين الحقل لنفسه باستخدام سلسلة - SQLServer 2005

StackOverflow https://stackoverflow.com/questions/1018395

سؤال

أتلقى خطأً في استخدام بناء الجملة هذا:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top