การต่อข้อมูลสตริงไม่ทำงานใน SQLite


136

ฉันพยายามเรียกใช้ฟังก์ชันแทนที่ SQlite แต่ใช้ฟิลด์อื่นในฟังก์ชัน

select  locationname + '<p>' from location;

ใน snip นี้ผลลัพธ์คือรายการของ 0s ฉันคาดว่าจะมีสตริงพร้อมข้อความจาก locationname และ'<p>'ตัวอักษร

คำตอบ:


266

ลองใช้||แทน+

select  locationname || '<p>' from location;

จากเอกสารประกอบ SQLite :

| | | ตัวดำเนินการคือ "concatenate" - มันรวมเข้าด้วยกันสองสายของตัวถูกดำเนินการ


26
field1 || field2 ส่งคืนค่า null หากหนึ่งในฟิลด์นั้นเป็นค่าว่าง อาจต้องการทำ ifnull (field1, '') || ifnull (field2, '') ที่จะให้คำตอบถ้าหนึ่งหรือทั้งสองฟิลด์เป็นโมฆะ จากนั้นคุณจะต้องหาว่าคุณต้องการทำอะไรถ้าทั้งคู่เป็นโมฆะ
Tom Cerul

5
@TomCerul หรือใช้COALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754

38

ตัว||ดำเนินการคือการต่อข้อมูลใน SQLite ใช้รหัสนี้:

select  locationname || '<p>' from location;

11
ท่อคู่ยังเป็นวิธีการ ANSI ของสตริงที่เชื่อมต่อกันได้รับการสนับสนุนใน Oracle & PostgreSQL เช่นกัน ...
OMG Ponies

32

สำหรับการเปรียบเทียบ

SQLite ||  
Oracle CONCAT (string1, string2) หรือ ||
MySQL CONCAT (string1, string2, string3 ... ) หรือ || หากเปิดใช้งาน PIPES_AS_CONCAT
Postgres CONCAT (string1, string2, string3 ... ) หรือ ||
Microsoft SQL Server 2012+ CONCAT (string1, string2, string3 ... ) หรือ + 
Microsoft Access +  

1
เริ่มในปี 2012 SQL Server ยังรองรับCONCAT(string1, string2, string3...)
Tim Cooke

1
MySQL ยังรองรับ||หากPIPES_AS_CONCATเปิดใช้งานโหมด
Paul Spiegel

2

สำหรับ Visual Studio 2010 โดยใช้ตัวออกแบบหรือตัวช่วยสร้างแหล่งข้อมูลคุณกำลังมีปัญหาในการใช้ || ผู้ประกอบการ สร้างมุมมองใน sqlite db และสร้างแหล่งข้อมูลของคุณจากนั้น

ดูเพิ่มเติมที่หัวข้อนี้

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