การต่อข้อมูลสตริงใน MySQL


149

ฉันใช้ MySQL และ MySQL Workbench 5.2 CE เมื่อฉันพยายามที่จะต่อกัน 2 คอลัมน์last_nameและfirst_nameมันไม่ทำงาน:

select first_name + last_name as "Name" from test.student

21
คำถามนี้แสดงให้เห็นว่าไม่มีการวิจัยอย่างแน่นอน ครั้งต่อไปให้ Google ตอบคำถามของคุณก่อนที่จะถามพวกเขาที่นี่
Mathias Lykkegaard Lorenzen

5
ฉันไม่สนใจว่าจะไม่มีการวิจัยเลยฮ่า ๆ stackoverflow เป็นสุดฮิตของฉันใน google สำหรับคำถามประเภทนี้และนี่คือสถานที่สำหรับคำตอบ crowdsourced :)
38432

คำตอบ:


271

MySQL นั้นแตกต่างจากการใช้งาน DBMS ส่วนใหญ่+หรือ||สำหรับการต่อข้อมูล มันใช้CONCATฟังก์ชั่น:

SELECT CONCAT(first_name, " ", last_name) AS Name FROM test.student

@eggyal ชี้ให้เห็นในความคิดเห็นคุณสามารถเปิดใช้งานการต่อสตริงกับตัว||ดำเนินการใน MySQL โดยการตั้งค่าPIPES_AS_CONCATโหมด SQL


7
คำตอบที่ดีกว่าอธิบายว่า MySQL ไม่ได้ใช้ตัวดำเนินการเชื่อมต่อ
DonBecker

28
ระวังนี้ไม่ได้ทั้งหมดจริง: MySQL ไม่สนับสนุน||สำหรับ concatenation สตริงเมื่อPIPES_AS_CONCATโหมด SQL ถูกเปิดใช้งาน
eggyal

1
สำหรับผู้ที่ใช้Doctrineฉันต้องใช้เครื่องหมายคำพูดเดี่ยวสำหรับพื้นที่ในCONCATและเครื่องหมายคำพูดคู่รอบเคียวรีทั้งหมด
craned

3
วิธีตั้งค่าPIPES_AS_CONCAT: SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',PIPES_AS_CONCAT');. SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'PIPES_AS_CONCAT', '');เพื่อล้างค่า: ตัวอย่างเพิ่มเติมได้ที่mariadb.com/kb/en/library/sql-mode/#examples
mivk

27

ลอง:

select concat(first_name,last_name) as "Name" from test.student

หรือดีกว่า:

select concat(first_name," ",last_name) as "Name" from test.student


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