Với bảng cơ sở dữ liệu sau đây:Có cách nào tốt hơn để tìm đảo chữ cái bằng SQL?
WORDS
alphagram....varchar(15)
word.........varchar(15) PK
length.......int
đâu:
- 'alphagram' là các chữ cái của một từ trong thứ tự chữ cái (ví dụ AEINNRTT là alphagram của INTRANET)
- khóa chính là 'từ' và có các chỉ mục trên alphagram và chiều dài
Tôi đã tìm thấy cách để tìm đảo chữ cái của một chuỗi ký tự đã cho s thông qua SQL. Ví dụ, để tìm cách đảo chữ cái của AEINNRTT này sẽ làm việc:
select alphagram, word, definition
from words
where length = 8
and alphagram like '%A%'
and alphagram like '%E%'
and alphagram like '%I%'
and alphagram like '%NN%'
and alphagram like '%R%'
and alphagram like '%TT%'
Đó sẽ trở lại 1 hàng (đối với INTRANET)
Và nếu tôi muốn bao gồm một số tiếng của các kí hiệu, ví dụ, có bao nhiêu từ là với INTRANET + một trống (ký tự đại diện) Tôi chỉ phải thay đổi 'độ dài' thành tổng số chữ cái + số thẻ hoang dã
ví dụ
select alphagram, word, definition
from words
where length = 9
and alphagram like '%A%'
and alphagram like '%E%'
and alphagram like '%I%'
and alphagram like '%NN%'
and alphagram like '%R%'
and alphagram like '%TT%'
... sẽ trở lại 8 hàng (giải trí, INSTANTER, trọn vẹn, mạng nội bộ, lưu động, NATTERING, RATTENING, và thoáng qua)
Câu hỏi của tôi là thế này: là có một cách hiệu quả hơn để làm điều này chỉ qua SQL?
Điều này hoạt động khá nhanh trong SQLServer nhưng khá chậm trong SqlLite. Tôi nhận thấy rằng các tìm kiếm% xxx% không nhanh.
Có lý do nào bạn chỉ sử dụng SQL thay vì lớp ứng dụng không? – JNK
Tôi đang cố giữ mọi thứ đơn giản, nhưng tôi có thể sẽ phải đi theo con đường đó. – eponymous23