SQLite Các hàm xử lý chuỗi: REPLACE, SUBSTR, TRIM, LENGTH

⚡ Tóm tắt thông minh

SQLite Các hàm xử lý chuỗi như LENGTH, SUBSTR, REPLACE và TRIM thao tác trực tiếp với văn bản bên trong các truy vấn, trong khi các hàm hỗ trợ số học như ABS và ROUND, cùng với các hàm hỗ trợ TYPEOF và phiên bản, mở rộng khả năng của chúng. SQLite Thư viện thực hiện.

  • 📏 Chiều dài: Hàm LENGTH đếm số ký tự trong một chuỗi và trả về null nếu giá trị được truyền vào là null.
  • 🔠 Chuyển đổi chữ hoa chữ thường: Các hàm UPPER và LOWER chuyển đổi chuỗi thành chữ hoa hoặc chữ thường, giữ nguyên số và giá trị rỗng.
  • ✂️ Chuỗi con: SUBSTR extracLệnh `ts` chọn các ký tự từ một vị trí đã chọn, trong khi lệnh `REPLACE` hoán đổi mọi lần xuất hiện của một chuỗi con này với một chuỗi con khác.
  • 🧮 Các công cụ hỗ trợ số: Hàm ABS trả về giá trị mà không có dấu, còn hàm ROUND làm tròn số thập phân xuống số chữ số bạn yêu cầu.
  • 🔍 Kiểm tra: TYPEOF trả về kiểu dữ liệu của một biểu thức, và LAST_INSERT_ROWID trả về ID của hàng được chèn cuối cùng.
  • 🤖 Hỗ trợ AI: GitHub Copilot và các công cụ chuyển đổi văn bản thành SQL dựa trên AI tạo nên khung sườn. SQLite Các truy vấn hàm, trong khi các hàm C tùy chỉnh mở rộng thư viện tích hợp sẵn.

SQLite Hàm chuỗi

Làm thế nào để thiết lập SQLite và chạy các truy vấn hàm chuỗi

SQLite theo mặc định được trang bị một danh sách các chức năng tích hợp trong SQLite thư viện. Bạn cũng có thể thêm một số hàm tùy chỉnh khác bằng ngôn ngữ C để mở rộng các hàm cốt lõi.

Lưu ý rằng, đối với tất cả các ví dụ sau, bạn phải chạy sqlite3.exe và mở kết nối đến cơ sở dữ liệu mẫu như sau:

Bước 1) Ở bước này, hãy mở My Computer và điều hướng đến thư mục “C:\sqlite”, sau đó mở tệp “sqlite3.exe“:

SQLite Hàm chuỗi

Bước 2) Mở cơ sở dữ liệu “TutorialsSampleDB.db” bằng lệnh sau:

SQLite Hàm chuỗi

Bây giờ bạn đã sẵn sàng để chạy bất kỳ truy vấn và thử bất kỳ truy vấn nào được sử dụng trong các phần sau.

Tìm LENGTH của một chuỗi trong SQLite

Để tìm độ dài của chuỗi, hãy sử dụng LENGTH(X) trong đó X là giá trị chuỗi. Nếu X là giá trị null thì hàm độ dài sẽ trả về giá trị null.

Bạn cũng có thể sử dụng hàm độ dài với các giá trị số để lấy độ dài của giá trị số.

Ví dụ:

Trong ví dụ sau, chúng ta sẽ thử cú pháp hàm LENGTH với các giá trị như sau:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Điều này sẽ cung cấp cho bạn:

Tìm LENGTH của một chuỗi trong SQLite

Kết quả như sau:

  • LENGTH('A string') trả về 8 là độ dài của chuỗi “Chuỗi A”.
  • LENGTH(NULL) trả về giá trị rỗng.
  • LENGTH(20) trả về 2, vì 20 dài 2 độ dài.
  • LENGTH(20.5) trả về 4; Dấu phẩy động “.” được tính là một ký tự, vì vậy bạn sẽ có bốn ký tự – 3 ký tự là độ dài của các số. Thêm một ký tự nữa cho dấu phẩy động “.”.

Đổi chữ hoa chữ thường với hàm UPPER và hàm LOWER

UPPER(X) sẽ trả về cùng một chuỗi x, nhưng nó sẽ biểu thị tất cả các ký tự chuỗi bằng ký tự in hoa.

LOWER(X) sẽ trả về cùng một chuỗi x, nhưng nó sẽ biểu thị tất cả các ký tự chuỗi bằng các ký tự nhỏ.

UPPER và LOWER trả về giá trị null nếu bạn chuyển giá trị null cho chúng.

Nếu bạn chuyển các giá trị số cho UPPER hoặc LOWER, cả hai giá trị này sẽ trả về giá trị số chính xác.

Ví dụ:

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm UPPER và LOWER trong SQLite

Kết quả như sau:

  • UPPER('a string') trả về chuỗi “a string” dưới dạng chữ in hoa “A STRING“.
  • LOWER('A STRING') trả về chuỗi “A STRING” dưới dạng chữ thường “a string“.
  • UPPER(20), LOWER(20) trả về cùng một số vì chúng không có bất kỳ ảnh hưởng nào đến các số.
  • UPPER(NULL), LOWER(NULL) trả về null vì chúng ta đã chuyển giá trị null cho chúng.

SQLite Hàm SUBSTR

Hàm SUBSTR trả về một số lượng chuỗi cụ thể, bắt đầu từ một vị trí cụ thể. Bạn có thể truyền ba toán hạng cho hàm, như sau: “SUBSTR(X,Y,Z)”

  • X là chuỗi ký tự hoặc cột chuỗi để phân tích cú pháp. Bạn có thể chuyển một giá trị bằng chữ (giá trị tĩnh) hoặc tên cột và trong trường hợp này, giá trị sẽ được đọc từ các giá trị của cột.
  • Y là vị trí bắt đầu để thực hiệntract chuỗi bắt đầu từ đó.
  • Z là số ký tự cần phân tích bắt đầu từ vị trí cụ thể Y. Số này là tùy chọn, bạn có thể bỏ qua nó và trong trường hợp này, SQLite sẽ extracChuỗi ký tự bắt đầu từ vị trí Y cho biết điểm kết thúc của chuỗi.

Ví dụ:

Trong truy vấn sau, chúng ta sẽ sử dụng hàm SUBSTR để lấy 4 ký tự bắt đầu từ ký tự thứ hai trong tên của học sinh:

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm SUBSTR trong SQLite

  • SUBSTR(StudentName, 2, 4) cắt chuỗi “StudentName” bắt đầu từ ký tự thứ hai và trả về 4 ký tự tiếp theo.
  • Tuy nhiên, trong hàm SUBSTR(StudentName, 2) chúng ta không chỉ định số lượng ký tự được trả về, đó là lý do tại sao SQLite Trả về tất cả các ký tự còn lại trong chuỗi “StudentName” bắt đầu từ vị trí thứ hai.

Thay đổi các phần của Chuỗi bằng SQLite Chức năng THAY THẾ

REPLACE được sử dụng để thay thế từng chuỗi xảy ra trên một chuỗi khác bằng một chuỗi.

REPLACE(X, Y, Z) – X là chuỗi ký tự hoặc cột đầu vào. Y là chuỗi cần thay thế bằng chuỗi Z. Lưu ý rằng nó sẽ thay thế bất kỳ sự xuất hiện nào của chuỗi Y bằng Z chứ không chỉ một.

Ví dụ:

Trong truy vấn sau, chúng ta sẽ thay thế tất cả các lần xuất hiện của chuỗi “xx” bằng chuỗi “SQLite":

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Điều này sẽ cung cấp cho bạn

Ví dụ về hàm REPLACE trong SQLite

  • Hàm thay thế đã thay thế tất cả các chuỗi “xx” bằng chuỗi “SQLite".
  • Vậy kết quả đầu ra sẽ là “SQLite rất nhẹ, SQLite rất dễ học”.

Cắt bớt khoảng trống bằng SQLite Hàm TRIM

TRIM loại bỏ các khoảng trống ở đầu hoặc cuối chuỗi. Nó sẽ không xóa bất kỳ khoảng trắng nào ở giữa chuỗi, chỉ ở đầu hoặc cuối chuỗi.

Ví dụ:

Trong truy vấn sau, chúng ta sẽ sử dụng hàm TRIM để xóa các khoảng trắng ở đầu và cuối chuỗi.

Lưu ý rằng, toán tử ghép “||” được dùng để thêm dấu “;” đến cuối chuỗi. Để cho bạn thấy rằng những khoảng trống đã bị xóa trong cửa sổ màu đen.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm TRIM trong SQLite

Lưu ý cách các khoảng trống được xóa khỏi đầu và cuối chuỗi, thay thế bằng ' ; ' cuối cùng.

Đọc giá trị tuyệt đối với SQLite Chức năng ABS

Hàm ABS trả về giá trị tuyệt đối của một giá trị số. Giá trị tuyệt đối là giá trị số không có dấu dương hoặc dấu âm. ABS(X) trả về một giá trị tùy thuộc vào giá trị của X như sau:

  • Giá trị tuyệt đối của X nếu X là giá trị số.
  • Giá trị NULL nếu X là giá trị null.
  • Giá trị “0.0” nếu X là một chuỗi.

Ví dụ:

Trong truy vấn sau, chúng ta sẽ thử lấy giá trị tuyệt đối của một chuỗi, một số và một giá trị null bằng cách sử dụng hàm ABS:

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Điều này sẽ cung cấp cho bạn:

Ví dụ về chức năng ABS trong SQLite

Kết quả như sau:

  • ABS(-2), ABS(+2) trả về 2, vì 2 là giá trị tuyệt đối cho cả “-2” và “+2”.
  • ABS('a string') trả về “0.0” vì bạn đã chuyển giá trị chuỗi chứ không phải giá trị số.
  • ABS(null) trả về null vì bạn đã chuyển giá trị null cho nó.

Làm tròn giá trị bằng Hàm ROUND trong SQLite

Số thập phân là số có dấu phẩy động “.” trên đó, ví dụ: “20.5”, “8.65”. Phần bên trái dấu phẩy động gọi là phần nguyên, phần bên phải dấu phẩy động gọi là phần thập phân.

Số nguyên là những số không có dấu phẩy động trên đó. Ví dụ: “20”, “8”.

ROUND(X) chuyển đổi các giá trị thập phân hoặc cột X thành số nguyên. Phần nguyên là phần bên trái dấu thập phân sẽ được trả về và tất cả các chữ số bên phải dấu thập phân sẽ bị xóa.

Ví dụ:

Trong truy vấn sau, chúng ta sẽ thử hàm ROUND với các tùy chọn khác nhau:

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm ROUND trong SQLite

Kết quả như sau:

  • ROUND(12.4354354) – trả về giá trị “12”, vì bạn không chỉ định số chữ số. Vì thế, SQLite đã loại bỏ toàn bộ phần thập phân.
  • ROUND(12.4354354, 2) – trả về giá trị “12.44”, vì bạn chỉ chỉ định 2 chữ số để làm tròn, là hai chữ số tính từ bên phải dấu thập phân.
  • ROUND(NULL) – trả về null vì bạn đã chuyển giá trị null cho nó.
  • ROUND('a string') – trả về giá trị “0.0” vì bạn đã chuyển một giá trị chuỗi cho nó.

Tìm kiểu dữ liệu của biểu thức bằng Hàm TYPEOF

Nếu bạn muốn tìm hiểu loại cột hoặc giá trị bằng chữ, bạn có thể sử dụng hàm TYPEOF để làm điều đó.

Hàm TYPEOF(X), từ tên của nó, trả về kiểu dữ liệu của biểu thức X. Nó trả về một giá trị chuỗi cho biết kiểu dữ liệu của X. Nó trả về giá trị dựa trên các kiểu dữ liệu, cho dù đó là giá trị “NULL”, thực, văn bản, số nguyên, …, v.v.

Ví dụ:

Trong truy vấn sau, chúng ta sẽ thử hàm TYPEOF với các kiểu giá trị theo nghĩa đen khác nhau:

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm TYPEOF trong SQLite

Kết quả trả về như sau:

  • TYPEOF(null) – trả về null vì bạn đã chuyển giá trị null cho nó.
  • TYPEOF(12) – trả về một số nguyên vì 12 là số nguyên.
  • TYPEOF(12.5) – trả về REAL vì 12.5 là số thực.
  • TYPEOF('a string') – trả về văn bản vì “một chuỗi” là một văn bản.

Tìm bản ghi được chèn cuối cùng với SQLite LAST_INSERT_ROWID

SQLite gán một khóa số nguyên (Id) cho tất cả các hàng trong tất cả các bảng. Số này được sử dụng để xác định duy nhất các hàng này.

Khi bạn CHÈN một hàng mới trên một bảng, SQLite sẽ gán cho rowid một giá trị duy nhất.

Nếu bảng có khóa chính chỉ được khai báo trên một cột và cột đó có kiểu dữ liệu INTEGER thì giá trị cột này sẽ được sử dụng làm rowid.

Hàm LAST_INSERT_ROWID() trả về ROW_ID của hàng được chèn cuối cùng trong bất kỳ bảng nào trong cơ sở dữ liệu. Lưu ý rằng nó không có bất kỳ toán hạng nào.

Ví dụ:

Trong ví dụ sau, chúng ta sẽ chạy hàm LAST_INSERT_ROWID() như sau:

SELECT LAST_INSERT_ROWID();

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm LAST_INSERT_ROWID trong SQLite

LAST_INSERT_ROWID() trả về 0 vì không có hàng nào được chèn vào bất kỳ bảng nào trong kết nối cơ sở dữ liệu hiện tại.

Bây giờ, hãy chèn một học sinh mới và chạy lại hàm LAST_INSERT_ROWID() sau câu lệnh chèn, như sau:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Điều này sẽ cung cấp cho bạn:

Ví dụ về hàm LAST_INSERT_ROWID trong SQLite

Sau khi chúng tôi chèn một sinh viên mới có id 11, LAST_INSERT_ROWID() sẽ trả về id hàng được chèn cuối cùng là 11.

Lấy phiên bản của bạn SQLite thư viện

Để có được phiên bản của bạn SQLite thư viện, bạn phải gọi hàm SQLITE_VERSION().

Ví dụ:

Hãy cùng tìm hiểu xem phiên bản của nó là gì SQLite chúng tôi đang sử dụng bằng cách chạy lệnh sau:

SELECT SQLITE_VERSION();

Điều này sẽ cung cấp cho bạn:

Ví dụ để lấy phiên bản của bạn SQLite thư viện

SQLITE_VERSION() trả về 3.9.2 là phiên bản của SQLite chúng tôi đang sử dụng.

Tạo các hàm do người dùng xác định và tổng hợp các hàm do người dùng xác định

Đối với một số người dùng, SQLite chức năng cốt lõi bị hạn chế. Họ có thể cần thêm các chức năng tùy chỉnh cho nhu cầu tùy chỉnh của mình.

SQLite không hỗ trợ tạo các hàm do người dùng xác định. Không giống như các hệ thống quản lý cơ sở dữ liệu khác, bạn không thể tạo các hàm do người dùng xác định trong SQLite trực tiếp.

Tuy nhiên, bạn có thể tạo một hàm bằng cách sử dụng các ngôn ngữ lập trình như... C#, C, PHP, hoặc C++ và gắn chức năng đó với lõi SQLite các chức năng trong SQLite Thư viện này tự động sử dụng hàm “sqlite3_create_function”. Sau đó, bạn có thể tái sử dụng chúng trong cơ sở dữ liệu của mình.

Ví dụ:

Trong ví dụ sau, chúng ta sẽ tạo một hàm do người dùng định nghĩa bằng ngôn ngữ lập trình C# và thêm nó vào... SQLite chức năng:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Đoạn mã này được viết trong Ngôn ngữ lập trình C#; nó tạo ra hàm C# bằng mã C#.

Tên hàm sẽ là “DoubleHàm "Value" nhận một tham số và trả về giá trị của tham số đó nhân với 2.

Lưu ý rằng C# tự động thêm chức năng này vào SQLite. Tất cả những gì bạn cần là biên dịch và chạy mã này. Sau đó C# sẽ thêm hàm có cùng tên đó vào danh sách SQLite chức năng. Sau đó, bạn có thể sử dụng chức năng này trong SQLite.

Tương tự như vậy khi sử dụng các ngôn ngữ lập trình như C#, C, PHP hoặc C++, bạn cũng có thể tạo các hàm tổng hợp do người dùng xác định. Được sử dụng để mở rộng các hàm tổng hợp trong SQLite và sử dụng chúng để tạo các hàm tổng hợp tùy chỉnh.

Câu Hỏi Thường Gặp

Các hàm vô hướng như LENGTH, UPPER và ROUND chạy một lần cho mỗi hàng và trả về một giá trị duy nhất. Các hàm tổng hợp như COUNT, SUM và GROUP_CONCAT xử lý nhiều hàng cùng nhau và trả về một kết quả kết hợp duy nhất cho toàn bộ nhóm.

SQLite Hàm này dùng toán tử || để nối các chuỗi, ví dụ: 'a' || 'b'. Các phiên bản mới hơn cũng bổ sung thêm các hàm vô hướng concat() và concat_ws(), trong khi group_concat() kết hợp các giá trị từ nhiều hàng thành một chuỗi được phân tách bằng dấu phẩy.

Vâng. SQLite Cung cấp các hàm DATE, TIME, DATETIME, JULIANDAY và STRFTIME. Các hàm này định dạng và tính toán ngày tháng từ văn bản, dấu thời gian Unix hoặc giá trị đặc biệt 'now', vì SQLite Lưu trữ ngày tháng dưới dạng TEXT, REAL hoặc INTEGER thay vì một kiểu dữ liệu riêng biệt.

Theo mặc định, UPPER và LOWER chỉ thay đổi các chữ cái ASCII từ A đến Z, vì vậy các ký tự có dấu hoặc không phải chữ Latinh vẫn không thay đổi. Để chuyển đổi đầy đủ chữ hoa và chữ thường sang Unicode, cần phải biên dịch tiện ích mở rộng ICU vào. SQLite, điều mà ít bản dựng mặc định nào có.

Sử dụng hàm INSTR(X, Y), hàm này trả về vị trí đầu tiên của chuỗi con Y bên trong chuỗi X, tính từ 1. Nó trả về 0 khi chuỗi con không tồn tại. Kết hợp INSTR với SUBSTR để ví dụtracVăn bản t sau một ký tự khớp.

Hãy bọc biểu thức trong IFNULL(X, fallback) hoặc COALESCE(X, fallback) để thay thế giá trị mặc định khi một hàm trả về null. COALESCE chấp nhận nhiều đối số và trả về giá trị đầu tiên không phải là null, điều này hữu ích khi nhiều cột có thể trống.

Vâng. Trợ lý GitHub Công cụ này đề xuất các lệnh gọi LENGTH, SUBSTR, REPLACE và ROUND từ một bình luận hoặc tên bảng, và soạn thảo mã hàm do người dùng định nghĩa bằng C hoặc C#. Luôn kiểm tra kết quả đầu ra của nó so với lược đồ của bạn, vì nó có thể tự tạo ra tên cột.

Đúng vậy. Các trợ lý AI chuyển đổi văn bản thành SQL sẽ biến các yêu cầu bằng ngôn ngữ thông thường thành... SQLite Các truy vấn sử dụng các hàm xử lý chuỗi như TRIM và REPLACE. Chúng giúp tăng tốc quá trình tạo nguyên mẫu.pingTuy nhiên, bạn nên kiểm tra lại câu lệnh SQL được tạo ra so với dữ liệu của mình, vì các mô hình học máy đôi khi tạo ra logic không chính xác.

Tóm tắt bài viết này với: