จะนำหน้าสตริงไปยังค่าคอลัมน์ใน MySQL ได้อย่างไร?


123

ฉันต้องการคำสั่งอัพเดต SQL สำหรับการอัปเดตฟิลด์เฉพาะของแถวทั้งหมดที่มีสตริง "test" เพื่อเพิ่มไว้ด้านหน้าของค่าที่มีอยู่

ตัวอย่างเช่นหากค่าที่มีอยู่คือ "ลอง" ควรกลายเป็น "testtry"

คำตอบ:


261

คุณสามารถใช้ฟังก์ชันCONCATเพื่อทำสิ่งนั้น:

UPDATE tbl SET col=CONCAT('test',col);

หากคุณต้องการรับข้อมูลที่ชาญฉลาดและอัปเดตเฉพาะคอลัมน์ที่ยังไม่มีการทดสอบไว้ข้างหน้าให้ลอง

UPDATE tbl SET col=CONCAT('test',col)
WHERE col NOT LIKE 'test%';

16
UPDATE tablename SET fieldname = CONCAT("test", fieldname) [WHERE ...]

อัพเดต TICKET set status_details = CONCAT (status _details, 'abc') โดยที่ ticket_id = 75108; ข้อผิดพลาด 1583 (42000): พารามิเตอร์ไม่ถูกต้องในการเรียกใช้ฟังก์ชันเนทีฟ 'CONCAT'
nirmesh khandelwal

9

ดูเหมือนว่าฟังก์ชันการอัปเดตสตริงจำนวนมากใน MySQL จะทำงานในลักษณะนี้: หากอาร์กิวเมนต์เดียวคือการnullเรียงต่อกันหรือฟังก์ชันอื่น ๆ จะกลับมาnullเช่นกัน ดังนั้นในการอัปเดตฟิลด์ที่มีnullค่าก่อนอื่นให้ตั้งค่าเป็นค่าที่ไม่ใช่ค่าว่างเช่น''

ตัวอย่างเช่น:

update table set field='' where field is null;
update table set field=concat(field,' append');

6

นั่นเป็นวิธีง่ายๆ

UPDATE YourTable SET YourColumn = CONCAT('prependedString', YourColumn);

แก้ไขคำสั่ง WHERE โดยที่คุณเชื่อมต่อการทดสอบกับคอลัมน์ที่เริ่มต้นด้วยการทดสอบเท่านั้น ดังนั้น: foo -> foo footest -> footest testfoo -> testtestfoo
Jukka Dahlbom

0
  • UPDATE table_name SET Column1 = CONCAT ('newtring', table_name.Column1) โดยที่ 1
  • UPDATE table_name SET Column1 = CONCAT ('newtring', table_name.Column2) โดยที่ 1
  • UPDATE table_name SET Column1 = CONCAT ('newtring', table_name.Column2, 'newtring2') โดยที่ 1

เราสามารถต่อคอลัมน์เดียวกันหรือคอลัมน์อื่น ๆ ของตารางได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.