ฉันจะต่อท้ายสตริงในฟิลด์ที่มีอยู่ใน MySQL ได้อย่างไร


103

ฉันต้องการอัปเดตโค้ดในบันทึกทั้งหมดของฉันให้เป็นสิ่งที่มีอยู่ในขณะนี้พร้อมด้วย _ มาตรฐานแนวคิดใด ๆ

ตัวอย่างเช่นถ้ารหัสคือ apple_1 และ apple_2 ฉันต้องการให้เป็น apple_1_standard และ apple_2_standard

ก่อน:

id   code
------------
1    apple_1 
1    apple_2

แบบสอบถาม Psuedo:

update categories set code = code + "_standard" where id = 1;

ผลลัพธ์ที่คาดหวัง:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard

คำตอบ:


228

คุณต้องใช้CONCAT()ฟังก์ชันใน MySQL สำหรับการต่อสายอักขระ:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;

62
ในกรณีที่มีคนพบปัญหาเดียวกันกับที่ฉันทำ: หากฟิลด์codeเป็น NULL โดยค่าเริ่มต้นคุณต้องใช้: UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;มิฉะนั้น concat จะให้ผลลัพธ์เป็น NULL เสมอ
Kai Noack

3
หรือคุณสามารถใช้ CONCAT_WS ซึ่งข้ามค่า NULL ตัวอย่างเช่นSELECT CONCAT_WS(', ','First name',NULL,'Last Name'); ให้ "ชื่อนามสกุล"
BarneySchmale

@ แดเนียลยังไงอัพเดทคำตอบตามคอมเม้นด้านบน
kiedysktos

คำถามพิเศษ / แยกต่างหากสำหรับกรณีว่างที่เป็นไปได้: stackoverflow.com/questions/14020867/…
qdinar

1

อัปเดตฟิลด์รูปภาพเพื่อเพิ่ม URL แบบเต็มโดยไม่สนใจฟิลด์ว่าง:

UPDATE test SET image = CONCAT('https://my-site.com/images/',image) WHERE image IS NOT NULL;

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