2012-07-05 33 views
13

Tôi đang cố gắng tìm hiểu cách viết một câu lệnh SQL sẽ lấy các trường trong đó chuỗi không dài 12 ký tự. Tôi chỉ muốn lấy chuỗi nếu họ là 10 ký tự.xác định chiều dài chuỗi văn bản DB2

Chức năng nào có thể thực hiện điều này trong DB2?

Tôi nhận ra nó sẽ giống như thế này, nhưng tôi không thể tìm thấy bất cứ thứ gì trên đó.
select * from table where not length(fieldName, 12)

+0

Chờ - bạn có muốn lấy _rows_ trong đó dữ liệu ** cột ** cụ thể ('trường') chứa dài 10 ký tự hay bạn muốn lấy ** không xác định * * cột cho tất cả các hàng, trong đó tất cả các giá trị trong cột (hoặc tên cột) dài 10 ký tự? –

+0

Tôi muốn lấy tất cả các hàng từ một cột số id. Một số số id dài 10 chữ số, một số là 9, và một số là 12. Tôi muốn tất cả ngoại trừ số 12 chữ số. – Frantumn

+0

Cột có thực sự là một loại số hay bạn đang sử dụng các ký tự số trong Id không? Nếu nó thực sự là một cột số, chỉ cần so sánh số đơn giản. Nếu đó là một chuỗi có chứa chữ số, vui lòng không có số 0 đứng đầu ... –

Trả lời

21

này sẽ lấy hồ sơ với chuỗi (trong cột fieldName) mà là 10 ký tự dài:

select * from table where length(fieldName)=10 
+0

Ngoài ra, hãy kiểm tra điều này: http://www.ibm.com/developerworks/data/library/techarticle/dm-0705nair/ - xác định độ dài chuỗi có thể đôi khi khó khăn. –

22

Từ câu hỏi tương tự DB2 - find and compare the lentgh of the value in a table field - thêm RTRIM từ LENGTH sẽ trở lại chiều dài của định nghĩa cột. Điều này phải đúng:

select * from table where length(RTRIM(fieldName))=10 
+1

Điều này thực hiện thủ thuật! Nó nhận được độ dài thực tế của chuỗi như OP được hỏi và không phải độ dài của cột. –

+1

Câu trả lời này đúng – numsu

Các vấn đề liên quan