Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để kiểm tra xem một giá trị có phải là số nguyên trong MySQL hay không?

Để kiểm tra xem giá trị đã cho có phải là một chuỗi hay không, chúng ta sử dụng hàm cast (). Nếu giá trị không phải là số thì nó trả về 0, ngược lại nó sẽ trả về giá trị số. Bằng cách này, chúng tôi có thể kiểm tra xem giá trị có phải là số nguyên hay không.

Trường hợp 1 - Kiểm tra một chuỗi có số nguyên

 mysql> select cast ('John123456' AS UNSIGNED); 

Sau đây là kết quả đầu ra. Nó cho thấy rằng giá trị không phải là số, do đó, 0 được trả về.

 + -------------------------------- + | cast ('John123456' AS UNSIGNED) | + -------------------------------- + | 0 | + -------------------------------- + 1 hàng được đặt, 1 cảnh báo (0,00 giây)  

Trường hợp 2 - Chỉ kiểm tra các giá trị số nguyên

 mysql> select cast ('123456' AS UNSIGNED); 

Sau đây là kết quả đầu ra. Nó cho thấy rằng giá trị là số, do đó giá trị tự nó được trả về.

 + ---------------------------- + | cast ('123456' AS UNSIGNED) | + ---------------------------- + | 123456 | + ---------------------------- + 1 hàng trong bộ (0,00 giây) 

Logic này cũng hoạt động tốt cho float.

Sau đây là truy vấn với giá trị float.

 mysql> SELECT CAST ('78 .90 'AS UNSIGNED); 

Đây là kết quả đầu ra.

 + --------------------------- + | CAST ('78 .90' NHƯ CHƯA ĐƯỢC KÝ) | + --------------------------- + | 78 | + --------------------------- + 1 hàng được đặt, 1 cảnh báo (0,00 giây) 

Lôgic thay thế với toán tử thông thường

Nó hoạt động cho tất cả các điều kiện cho bất kỳ giá trị nào, ngay cả giá trị float.

Hãy để chúng tôi tạo một bảng mới.

 mysql> tạo bảng Kiểm traIntegerDemo -> (-> Giá trị varchar (200) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,88 giây) 

Chèn bản ghi vào bảng.

 mysql> chèn vào giá trị CheckIntegerDemo ('John123456'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,10 giây) mysql> chèn vào giá trị CheckIntegerDemo ('123456'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) mysql> chèn vào giá trị CheckIntegerDemo ('123.456'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) 

Để hiển thị tất cả các bản ghi.

 mysql> select * từ CheckIntegerDemo; 

Đây là kết quả đầu ra.

 + ------------ + | Giá trị | + ------------ + | John123456 || 123456 || 123.456 | + ------------ + 3 hàng trong bộ (0,00 giây 

Trong kết quả đầu ra ở trên, chỉ có 123456 là số nguyên và các số còn lại thì không.

Cú pháp để kiểm tra xem giá trị có phải là số nguyên hay không.

 chọn yourColumnName từ yourTableName trong đó YourColumnName REGEXP '^ -? [0-9] + $'; 

Truy vấn trong đó chúng tôi đã sử dụng biểu thức chính quy. Điều này sẽ chỉ xuất ra giá trị số nguyên.

 mysql> chọn Giá trị từ CheckIntegerDemo trong đó Giá trị REGEXP '^ -? [0-9] + $'; 

Sau đây là kết quả đầu ra.

 + -------- + | Giá trị | + -------- + | 123456 | + -------- + 1 hàng trong bộ (0,00 giây)