檢查 MySQL 資料庫中的值是否為數字
本教程旨在檢查表中的值是否在 MySQL 中具有數字字元。
很多時候,企業和組織需要檢查特定列的行中的特定值是否為數字。確保資料庫中的資料一致性和資料完整性是很常見的。
例如,基於產品的公司可能需要使用此功能或方法來確保所有使用者的使用者名稱或其他相關欄位中都有或沒有數字字元。
資料分析師可以使用正規表示式併為正在考慮的欄位應用一個簡單的子句來完成這項工作。
使用正規表示式檢查 MySQL 中的值是否為數字
讓我們瞭解此方法的工作原理以及如何在 MySQL 資料庫中執行此操作。
但是,在開始之前,我們建立一個虛擬資料集來使用。在這裡,我們建立了一個表 student_details_table
以及幾行。
-- create the table student_details_table
CREATE TABLE student_details_table(
stu_id int,
stu_firstName varchar(255),
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id, stu_firstName)
);
-- insert rows to the table student_details_table
INSERT INTO student_details_table(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
如我們所見,我們已將 stu_id
和 stu_firstName
設定為我們的表 student_details_table
的主鍵。它將確保此列中的值不能重複或 NULL
。
還應注意,主鍵不能在其列中擁有 Null
值。如果我們在此列中推送或插入 Null
值,我們肯定會收到錯誤。
有時,組織有必要擺脫這個鍵來插入多個相似的值或 null
值。
上面的查詢建立了一個表,其中包含學生的名字和姓氏。要檢視資料中的條目,我們使用以下程式碼。
SELECT * FROM student_details_table;
該查詢將給出以下輸出。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
現在讓我們使用 DESCRIBE
語句更深入地瞭解我們的表。可以在以下查詢的幫助下執行此操作。
DESCRIBE name_of_the_table;
在我們的例子中,我們需要編寫以下查詢來了解表 student_details_table
的詳細資訊。
DESCRIBE student_details_table;
該語句將幫助我們獲取表的複雜詳細資訊,例如與每列關聯的資料型別、不同列及其名稱、與每列關聯的鍵以及與表相關的任何額外資訊。
該查詢將為我們提供以下輸出。
Field Type Null Key Default Extra
stu_id int NO PRI
stu_firstName varchar(255) NO PRI
stu_lastName varchar(255) YES
現在,讓我們檢查表 student_details_table
中帶有 stu_id
欄位的值是否包含數字字元。
為此,我們需要使用正規表示式並將行的值與表示式匹配。表示式可以表述為:'^[0-9]+$'
。
它可以幫助我們檢查表格中是否存在任何數字字元。我們可以在以下查詢的幫助下完成此操作。
SELECT * FROM student_details_table WHERE stu_id REGEXP '^[0-9]+$';
如表和查詢所示,我們將獲取 stu_id
列中的所有數字記錄。查詢的輸出如下所示。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
我們將整個表作為輸出,因為這些條目中的每一個都有一個與 stu_id
列關聯的數字。
為了更深入地研究這個問題,讓我們從表中過濾學生,以便我們只獲取數字在 0 到 5 範圍內的學生的詳細資訊。
stu_id
大於 5 的學生應該被淘汰。我們可以使用以下查詢來做到這一點。
SELECT * FROM student_details_table WHERE stu_id REGEXP '^[0-5]+$';
該查詢將幫助我們獲取以下輸出。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
如上面的輸出所示,stu_id
大於 5 的學生已被過濾掉。因此,藉助正規表示式,我們可以檢查特定表的列是否具有數值。
使用 concat
函式檢查 MySQL 中的值是否為數字
完成此操作的另一種方法是使用 concat
函式。可以使用以下查詢執行該操作。
SELECT * FROM student_details_table WHERE concat('',stu_id * 1) = stu_id;
它將確保只有來自 stu_id
列的條目以數字形式獲取。
因此,藉助正規表示式和 concat
函式,我們可以有效地檢查或獲取 MySQL 中表的數字條目的資料。
下面是一些有助於更好地學習該概念的其他相關主題。
- MySQL 中的正規表示式。
- MySQL 中的
Concat
函式。