aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

SQLite instr để tìm chuỗi nguyên văn có dấu phần trăm

Suong Nguyen by Suong Nguyen
13/11/2026
in Backend
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Một ô lọc ghi chú nhận cụm 20%. Người dùng có thể muốn tìm đúng ba ký tự đó, trong khi dấu phần trăm có ý nghĩa riêng trong mẫu LIKE. Để tránh phải giải thích quy tắc mẫu cho ô tìm kiếm đơn giản, hãy chốt trước rằng đầu vào đại diện cho một chuỗi nguyên văn.

Ví dụ và cách đọc

SQLite instr nhận văn bản và đoạn cần tìm. Kết quả dương biểu thị vị trí của lần khớp đầu tiên, tính từ 1. Không có đoạn khớp thì kết quả là 0. Nếu một đối số NULL, kết quả là NULL. Fixture dùng chuỗi TEXT và một dòng thiếu nội dung để bạn thấy đủ ba trường hợp.

WITH notes(id, body) AS (
  VALUES (1, 'giảm 20% hôm nay'), (2, 'giảm 20 điểm'), (3, NULL)
)
SELECT id, instr(body, '20%') AS position
FROM notes
ORDER BY id;

Kiểm tra kết quả

Kết quả theo ID là 6, 0 và NULL. Khi chỉ cần lọc dòng có đoạn khớp, dùng điều kiện instr(body, ?) > 0 với tham số do driver gắn vào. Trong SELECT minh họa, giữ cột position để phân biệt dữ liệu thiếu với dữ liệu đã có nhưng không chứa cụm tìm. Giá trị SQL NULL bị loại khỏi kết quả khi áp dụng điều kiện lớn hơn 0.

Áp dụng và giới hạn

Thử thêm ô tìm rỗng và quyết định ngay ở giao diện xem nên hiện mọi dòng hay chờ người dùng nhập. Nếu sản phẩm muốn tìm không phân biệt hoa thường hoặc dấu tiếng Việt, hãy xác định chính sách chuẩn hóa riêng và thêm fixture. Ví dụ chỉ chạy SELECT trong SQLite 3.54.0, không đo index, không chạy ORM và không đánh giá tìm kiếm toàn văn. Đừng chọn truy vấn cho bảng lớn chỉ dựa vào ba hàng minh họa.

Tình huống áp dụng

Thử tiếp một ghi chú chứa hai lần cụm tìm, chẳng hạn “20% hôm nay, 20% ngày mai”. Giá trị trả về là vị trí đầu tiên; nó không phải số lần xuất hiện. Nếu frontend cần tô sáng mọi lần khớp, hãy viết logic đó riêng và xác định đơn vị vị trí mà môi trường hiển thị sử dụng. Đặc biệt, vị trí ký tự của SQLite không nên được chuyển thẳng thành offset UTF-16 của JavaScript trong mọi trường hợp.

Khi viết test tích hợp, truyền cụm tìm qua tham số của driver, rồi kiểm tra ID trả về chứ không chỉ số lượng dòng. Thêm một mẫu có ký tự gạch dưới và một mẫu chỉ có phần tiền tố để kiểm tra đường đi của ô lọc. Nếu ứng dụng còn có chức năng tìm theo mẫu, đặt tên hai chế độ sao cho người dùng biết ký tự đặc biệt được hiểu thế nào. Với văn bản thiếu, thống nhất trước có đưa dòng đó vào chế độ hiện toàn bộ hay không.

Nguồn tham khảo

  • Tài liệu chính thức 1

Tags: SQLSQLiteTìm kiếm
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

SQL LAG: dòng trước không nhất thiết là ngày hôm trước

by Suong Nguyen
12/11/2026
0

Tính chênh lệch theo lần ghi trước và phát hiện khoảng trống ngày bằng một fixture SQLite.

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

COUNT DISTINCT và NULL: đếm giá trị khác nhau hay đếm cả nhóm thiếu?

by Suong Nguyen
11/11/2026
0

Dùng fixture SQL nhỏ để phân biệt số dòng, số giá trị khác NULL, giá trị duy nhất và nhóm NULL trong báo cáo.

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

SQL COALESCE: chuỗi rỗng chưa phải NULL, xử lý bằng NULLIF và TRIM

by Suong Nguyen
10/11/2026
0

Phân biệt NULL, chuỗi rỗng và chuỗi chỉ có dấu cách trước khi chọn giá trị dự phòng cho một trường văn bản.

Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

SQL tính tỷ lệ: ép kiểu trước phép chia để không mất phần thập phân

by Suong Nguyen
09/11/2026
0

Kiểm tra phép chia số nguyên, lỗi CAST quá muộn và mẫu số bằng 0 bằng các truy vấn SQLite nhỏ, kèm đối chiếu PostgreSQL 17.

Next Post
Minh họa kiến trúc backend API gọn gàng cho sản phẩm nhỏ

Number.isFinite và isFinite khi dữ liệu có thể là chuỗi

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native Alert trên Android và hai đường hủy hộp thoại
  • Map.set có đưa khóa đã tồn tại xuống cuối không?
  • Android postInvalidate khi custom View cần lên lịch vẽ lại

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply