Nối chuỗi không hoạt động trong SQLite


136

Tôi đang cố gắng thực hiện chức năng thay thế SQlite, nhưng sử dụng một trường khác trong chức năng.

select  locationname + '<p>' from location;

Trong snip này, kết quả là một danh sách 0s. Tôi đã mong đợi một chuỗi với văn bản từ locationname và '<p>'chữ.

Câu trả lời:


266

Hãy thử sử dụng ||thay thế+

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

Từ tài liệu SQLite :

| | toán tử là "concatenate" - nó kết hợp hai chuỗi toán hạng của nó.


26
trường1 | | trường2 trả về null nếu một trong các trường là null. Người ta có thể muốn làm ifnull (field1, '') || ifnull (field2, ''). Điều đó sẽ cung cấp cho bạn một phản hồi nếu một hoặc cả hai trường là null. Sau đó, bạn có thể tìm ra những gì bạn muốn làm nếu cả hai đều là null.
Tom Cerul

5
@TomCerul hoặc sử dụngCOALESCE(nullable_field, '') || COALESCE(another_nullable_field, '')
zx8754

38

Các ||nhà điều hành là phép nối trong SQLite. Sử dụng mã này:

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

11
Ống đôi cũng là phương pháp nối chuỗi ANSI, cũng được hỗ trợ trên Oracle & PostgreQuery ...
OMG Ponies

32

Để so sánh,

SQLite | |  
Oracle CONCAT (chuỗi1, chuỗi2) hoặc ||
CONCAT MySQL (chuỗi1, chuỗi2, chuỗi3 ...) hoặc || nếu bật PIPES_AS_CONCAT
Postgres CONCAT (chuỗi1, chuỗi2, chuỗi3 ...) hoặc ||
Microsoft SQL Server 2012+ CONCAT (chuỗi1, chuỗi2, chuỗi3 ...) hoặc + 
Truy cập Microsoft +  

1
Bắt đầu từ năm 2012, SQL Server cũng hỗ trợCONCAT(string1, string2, string3...)
Tim Cooke

1
MySQL cũng hỗ trợ ||nếu PIPES_AS_CONCATchế độ được bật.
Paul Spiegel

2

đối với Visual Studio 2010, sử dụng trình thiết kế hoặc trình hướng dẫn Nguồn dữ liệu, bạn sẽ gặp rắc rối khi sử dụng || nhà điều hành. Tạo một khung nhìn trong db sqlite và tạo (các) nguồn dữ liệu của bạn từ đó.

Xem thêm chủ đề này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.