Trong bài đăng này, tôi đang chia sẻ trình diễn về cách xác thực phạm vi Địa chỉ IP trong SQL Server.
Bạn có thể đặt CHECK CONSTRAINT cho từng phần của Địa chỉ IP để xác thực phạm vi phù hợp.
Ví dụ,
Bạn yêu cầu chèn Địa chỉ IP từ 10.20 phạm vi. Điều này bạn có thể đạt được bằng cách sử dụng chức năng PARSENAME của SQL Server.
Dưới đây là một bản demo đầy đủ về điều này:
Trước tiên, hãy tạo một bảng và xác định Ràng buộc KIỂM TRA bằng PARSENAME.
1 2 3 4 5 6 7 số 8 9 10 11 12 13 14 15 | CREATE TABLE tbl_IPAddress ( IPAddress VARCHAR(15) ) GO ALTER TABLE tbl_IPAddress ADD CONSTRAINT chk_tbl_IPAddress_IPAddress CHECK ( (ParseName(IPAddress, 4) = 12) AND (ParseName(IPAddress, 3) = 4) AND (ParseName(IPAddress, 2) BETWEEN số 8 AND 26) AND (ParseName(IPAddress, 1) BETWEEN 1 AND 255) ) GO |
Bạn có thể thấy xác thực bốn phần khác nhau,
Xác thực hai phần đầu tiên là: chỉ Dải địa chỉ IP bắt đầu bằng 12.4
Xác thực hai phần cuối cùng là: số 8 đến 26 và 1 đến 255.
Có nghĩa là Địa chỉ IP hợp lệ là :
12.4.số 8.125
12.4.15.241
Địa chỉ IP không hợp lệ là:
10.2.21.52
12.4.7.124
Bây giờ hãy chèn tập lệnh cho một số Địa chỉ IP hợp lệ:
1 2 3 4 5 6 7 số 8 | INSERT INTO tbl_IPAddress (IPAddress) VALUES ('12.4.số 8.34') ,('12.4.16.125') ,('12.4.22.120') ,('12.4.22.120') ,('12.4.15.216') GO |
Nếu bạn đã cố gắng chèn ngoài phạm vi, thì điều này sẽ hiển thị cho bạn một lỗi mà bạn không thể vi phạm ràng buộc kiểm tra.
Tập lệnh để Chọn phần khác nhau của Địa chỉ IP được lưu trữ:
1 2 3 4 5 6 | SELECT IPAddress ,ParseName(IPAddress, 4) As FirstPart ,ParseName(IPAddress, 3) As SecondPart ,ParseName(IPAddress, 2) As ThirdPart ,ParseName(IPAddress, 1) As FourthPart FROM tbl_IPAddress |
Đề xuất của tôi:
Trong bản trình diễn này, tôi đã lưu trữ Địa chỉ IP vào một cột VARCHAR (15), đây không phải là cách lưu trữ hiệu quả.
Whenever you donsố 8217;t require any analysis on IP Address, then you can store the IP Address into one column. Otherwise, please visit this page on the effective storage of IP Addresses.