এসকিউএল আপড স্ট্রিং সহ কোনও ক্ষেত্রের সমস্ত মান আপডেট করুন কনক্যাট কাজ করছে না


159

আমি যা করতে চাই তা এখানে:

বর্তমান সারণী:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | max         |  
|  2 | linda       |  
|  3 | sam         |  
|  4 | henry       |  
+----+-------------+  

রহস্য অনুসন্ধান (এর মতো কিছু "UPDATE table SET data = CONCAT(data, 'a')")

ফলাফল সারণী:

+----+-------------+  
| id | data        |  
+----+-------------+  
|  1 | maxa        |  
|  2 | lindaa      |  
|  3 | sama        |  
|  4 | henrya      |  
+----+-------------+  

এটাই! আমার এটি কেবল একটি একক ক্যোয়ারিতে করা দরকার, তবে কোনও উপায় খুঁজে পাওয়া যাবে না বলে মনে হচ্ছে। আমি ব্লুহোস্টে মাইএসকিউএল ব্যবহার করছি (আমি মনে করি এর সংস্করণ 4.1)

ধন্যবাদ সবাইকে.


5
আপনি কি আসলে আপনার জিজ্ঞাসা চেষ্টা করেছেন? এটি "কেবলমাত্র কাজ" করা উচিত
ফিলি

হ্যাঁ আমি চেষ্টা করে দেখেছি। আমি ভেবেছিলাম এটি ঠিক কাজ করা উচিত।
ফ্রেশিয়েবল

এখানে আমার 'রিয়েল লাইফ' ​​রিটার্ন এসেছে: [এসকিউএল] আপডেট প্রশ্নাবলীর জাতীয় সেট ক্যাট_আইডি = কনক্যাট (ক্যাট_আইডি, 'এ') আক্রান্ত সারি: 0 সময়: 0.069ms
ফ্রেশিয়েবল

কি cat_idএকটি অক্ষর ক্ষেত্র (varchar, টেক্সট, ইত্যাদি) বা সাংখ্যিক?
ফিল

আমার জন্য কাজ করছিল না (এসকিউএল 2012) তাই আমি চেষ্টা করেছি "আপডেট টি সেট ডেটা = ডেটা + 'এ'" ভাল কাজ করে ..
সিলভার

উত্তর:


257

এটি আপনার প্রয়োজন কেবলমাত্র:

mysql> select * from t;
+------+-------+
| id   | data  |
+------+-------+
|    1 | max   |
|    2 | linda |
|    3 | sam   |
|    4 | henry |
+------+-------+
4 rows in set (0.02 sec)

mysql> update t set data=concat(data, 'a');
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from t;
+------+--------+
| id   | data   |
+------+--------+
|    1 | maxa   |
|    2 | lindaa |
|    3 | sama   |
|    4 | henrya |
+------+--------+
4 rows in set (0.00 sec)

আপনি কেন সমস্যা বোধ করবেন তা নিশ্চিত নন, যদিও আমি এটি 5.1.41-এ পরীক্ষা করছি


1
concat4.1 ফাংশন দেখায় একই - dev.mysql.com/doc/refman/4.1/en/...
ফিল

12
এটি সমাধান। দেখা যাচ্ছে কলামটিতে অক্ষরগুলির একটি সীমিত সেট রয়েছে যা এটি গ্রহণ করবে, পরিবর্তন করেছে এবং এখন ক্যোয়ারীটি ঠিকঠাক কাজ করে।
ফ্রেশিয়েবল

আমার কিছুটা একই রকমেরো আছে, আমি একক উদ্ধৃতি দিয়ে সমস্ত ডাবল কোট প্রতিস্থাপন করতে চাই except কোনও পরামর্শ আমি কীভাবে এটি করতে পারি?
শাওনলাইন

এটি একটি ভাল উত্তর ছিল, তবে কিছুটা বিভ্রান্তিকর, যেহেতু আমার সার্ভারে 'ডেটা' ছিল একটি কীওয়ার্ড। সম্ভবত এর চেয়ে কম অস্পষ্ট উদাহরণ হতে পারে:UPDATE table SET column_name=concat(column_name, 'string');
কিকি রড্রিগেজ

38

নাল মান সহ কনক্যাট নাল ফেরায়, তাই সবচেয়ে সহজ সমাধান হ'ল:

MyTable SET spare = IFNULL আপডেট করুন (কনক্যাট (স্পেসার্স, "স্ট্রিং"), "স্ট্রিং")


11
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1

আমার জন্য কাজ না।

অতিরিক্তগুলি NULLডিফল্টরূপে তবে এটিরvarchar


5
দেখে মনে হচ্ছে, মানটি যদি ডিফল্টভাবে NULL হয় তবে এটি কাজ করে না। এটি একটি খালি স্ট্রিং হতে হবে
DS_web_developer

9

NULLএটিকে মোড়ানো করে খালি স্ট্রিং দিয়ে মানগুলি রূপান্তর করুনCOALESCE

"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"

অথবা

ব্যবহারের CONCAT_WS পরিবর্তে:

"UPDATE table SET data = CONCAT_WS(',',data, 'a')"

8

এটি সমাধান। দেখা যাচ্ছে কলামটিতে অক্ষরগুলির একটি সীমিত সেট রয়েছে যা এটি গ্রহণ করবে, পরিবর্তন করেছে এবং এখন ক্যোয়ারীটি ঠিকঠাক কাজ করে।


8
UPDATE 
    myTable
SET 
    col = CONCAT( col , "string" )

এটি কাজ করতে পারেনি। অনুরোধ বাক্য গঠন সঠিক ছিল, তবে মৃত্যুদন্ড কার্যকর করার সময় "0 লাইন প্রভাবিত"।

সমাধানটি ছিল:

UPDATE 
    myTable 
SET 
    col = CONCAT( myTable.col , "string" )

যে এক কাজ করে।


2

তুমি এটি করতে পারো:

Update myTable
SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
WHERE id = 1

ক্ষেত্র শূন্য হলে ক্ষেত্র = ক্ষেত্র + মান কাজ করে না।


আপনি কি সত্যিই মাইএসকিএলে স্ট্রিং সহ + ব্যবহার করতে পারেন?
সুধীর এন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.