09/10/2018, 18:08

Dùng hàm trong câu lệnh SQL

Làm sao để dùng 1 hàm trong câu lệnh SQL
ví dụ: Trong CSDL có bảng Tinh, và field tentinh bao gồm: Tây Ninh, Thành phố Hồ Chí Minh, HÀ NỘi, huế, Hải Phòng
tôi có 1 text box là "timtinh": tất nhiên khi nhập vào thì không phân biệt hoa thường, như vậy câu lệnh Select của tôi phải như thế nào mới có thể tìm được đúng tỉnh mà người ta nhập vào text box "timtinh" mà không phân biệt hoa thường.
gate2vn viết 20:16 ngày 09/10/2018
có thể chuyển hết về cùng 1 dạng chữ hoa hay chữ thường rồi so sánh.
nguyenthu viết 20:21 ngày 09/10/2018
Trong câu lệnh SQL, bạn cần nên tránh việc dùng những hàm (thí dụ, chuyển sang hoa, thường, trung-bình, trích năm tháng...) vì nó làm cho câu lệnh chạy chậm (bạn cứ nghĩ là có rất nhiều người đang surf, hay là đường truyền chậm...). Hơn nữa SQL không có dự trù xài nhiều hàm.
Bạn nên chuyển nó về dạng chữ thường (hay chữ hoa) bằng một function mà bạn viết riêng bên ngoài module SQL, sau đó dùng câu SQL để so sánh một cách càng giản dị càng tốt.
Nếu bạn dùng Unicode thì cẩn thận, bạn phải viết riêng một hàm chuyển từ hoa sang thường (hay ngược lại) vì SQL không có dự trù chuyện này.
ltuananh viết 20:24 ngày 09/10/2018
Font chữ tôi xài là Unicode, tất nhiên khi Select thì có phân biệt hoa thường của những chữ có dấu. Tôi đã viết 1 hàm chuyển chuỗi thành hoa rồi, nhưng tôi không biết làm sao dùng hàm này với Select, vì nếu không dùng với Select thì làm sao lọc những dữ liệu mình lấy cho được khi SQL phân biệt ký tự chữ hoa thường Unicode.
Các cao thủ xin hãy cố giúp tôi nhé, quả thật tôi nghĩ hoài mà không ra.
normal viết 20:09 ngày 09/10/2018
bạn đã viết hàm chuyển chuổi thành hoa mà không biết dùng ???! !, bạn lưu giá trị mà hàm bạn viết trả về vào 1 biết vd: $result rồi trong Select thì: where tinh=$result
bpmtri viết 20:21 ngày 09/10/2018
Bạn có thể so sánh chuỗi Unicode, không phân biệt hoa thường bằng câu lệnh LIKE

VD: SELECT * FROM tinh WHERE ten LIKE %aBc%
ltuananh viết 20:22 ngày 09/10/2018
Rất tiếc Like cũng phân biệt hoa thường luôn
ltuananh viết 20:18 ngày 09/10/2018
Chào Normal, rất cám ơn câu trả lời của bạn, thật tình tui đã viết được hàm chuyển chuỗi thành hoa tên là Chuyen_Hoa(chuoi).
Tôi có Text box để nhập tỉnh cần tìm là txtTinh
nhưng câu lệnh SQL là:
"Select * From Tinh where tentinh='" & Chuyen_Hoa(txtTinh) & "'"
Điều quan trọng ở đây là làm sao cho dữ liệu trong field tentinh được chuyển thành hoa trước khi so sánh thì mới được, nhưng thật tình tui không nghĩ được cách nào cả.
nguyenthu viết 20:18 ngày 09/10/2018
Bạn ltuananh,
Bạn có thể chuyển cách giải quyết như sau :
1) database của bạn, trong cột tentinh, bạn hãy chuyển tất cả ra chữ hoa.
2) Từ textbox mà khách nhập tên tinh như txtTinh, bạn chuyển nó ra chữ hoa :
$txtTinh = Chuyen_Hoa (txtTinh);
3) Xong cho chạy câu SQL :
"Select * From Tinh where tentinh='" & $txtTinh & "'"
Chương trình sẽ chạy, nhưng phải chịu khó làm mục 1).
ltuananh viết 20:09 ngày 09/10/2018
Làm sao để chuyển được dữ liệu trong cột tentinh sang hoa bây giờ, bạn không muốn bảo là tôi phải vào csdl và sửa thủ công lại chứ?
Bài liên quan
0