2010-07-20 38 views
7

Có cách nào để đếm các từ trong chuỗi văn bản không?Truy vấn để đếm các từ SQLite 3

Tôi đang sử dụng SQLite 3 và tôi đang cố gắng viết truy vấn cần một chuỗi các chuỗi văn bản dài và đếm số từ trong mỗi từ.

Tôi cũng muốn bỏ qua các thẻ html (hoặc bất cứ điều gì giữa dấu mũ) chẳng hạn như thẻ đoạn, phá vỡ thẻ vv

Vì vậy, khi tôi chạy một văn bản lựa chọn truy vấn từ cột thích hợp, tôi nhận được một văn bản dài dòng lớn đầu ra với một số thẻ html trong đó, và tôi chỉ muốn đếm các từ.

Tôi làm cách nào để viết truy vấn để thực hiện việc này?

Trả lời

15

Theo như tôi biết không có cách nào để trực tiếp đếm số từ trong một chuỗi trong SQL Lite 3. (Tôi quen thuộc hơn với mysql và ms sql)

Bạn có thể sử dụng dài và Thay thế làm việc xung quanh

SELECT length(@String) - length(replace(@String, ' ', '')) + 1 
0

Câu trả lời trước là không chính xác cho các cột trống. Bạn sẽ cần phải thêm một trường hợp/khi/sau đó tuyên bố chọn của bạn:

SELECT someStr, 
    CASE WHEN length(someStr) >= 1 
    THEN 
    (length(someStr) - length(replace(someStr), ' ', '')) + 1 
    ELSE 
    (length(someStr) - length(replace(someStr), ' ', '')) 
    END as NumOfWords 
FROM someTable; 

được sửa đổi: Nếu cột có 0 không gian, nhưng có một từ trong nó, nó sẽ không đúng báo cáo 0. Thay đổi điều kiện cho phép cho nó.

Nguồn: An Excel Trick I used to do the same thing

0

Câu trả lời từ @Ziferius có lỗi cú pháp nhỏ, là đây là một công tác, kiểm tra bằng bản thân mình.

SELECT someStr, CASE WHEN length(someStr) >= 1 
THEN 
    (length(someStr) - length(replace(someStr, ' ', ''))) + 1 
ELSE 
    (length(someStr) - length(replace(someStr, ' ', ''))) 
END as NumOfWords FROM someTable; 
Các vấn đề liên quan