2015-05-27 28 views
5

Làm cách nào tôi có thể xóa chỉ 0 ký tự đầu tiên khỏi một varchar?Xóa 0 hàng đầu đầu tiên từ varchar với MSSQL

Ví dụ '000.303' ==> '00.303'

Tôi cố gắng này không thành công, tất cả các ký tự 0 được loại bỏ:

SELECT SUBSTRING('000303', PATINDEX('%[^0]%', '000303'),LEN('000303')); 

Cảm ơn

Trả lời

6

Hãy thử sử dụng STUFF Chức năng

SELECT CASE WHEN LEFT('000303',1) = '0' THEN STUFF('000303',1,1,'') ELSE '000303' END 

hoặc sử dụng RIGHT Chức năng

SELECT CASE WHEN LEFT('000303',1) = '0' THEN RIGHT('000303', LEN('000303')-1) ELSE '000303' END 

Thay vì LEFT('000303',1) = '0'séc bạn cũng có thể sử dụng

charindex('0','000303') = 1 hoặc

'000303' LIKE '0%'(ughai gợi ý)

+1

Saw câu hỏi này và suy nghĩ, 'STUFF' phù hợp một cách hoàn hảo ở đây và sau đó nhìn thấy câu trả lời của bạn. :). tốt, bạn thậm chí có thể sử dụng '000303' LIKE '0%' 'nếu bạn đang tìm kiếm lựa chọn thay thế cho' LEFT ('000303', 1) = '0'' – ughai

+0

@ughai - Cảm ơn dude cập nhật. –

+0

Cảm ơn, tôi sẽ khám phá chức năng STUFF. – Maxime

1

Hãy thử điều này:

SELECT RIGHT(MyColumn, LEN(MyColumn) - 1) 

Điều này sẽ loại bỏ ký tự đầu tiên khỏi cột VARCHAR.

Nếu nó là cụ thể cho 0 sau đó thử này:

SELECT CASE WHEN LEFT(MyColumn,1) = '0' 
    THEN RIGHT(MyColumn, LEN(MyColumn) - 1) 
    ELSE 
    MyColumn END 
+1

Chăm sóc downvoter để bình luận! –

+4

Đầu tiên một dải luôn là ký tự đầu tiên, cột thứ hai trả về NULL nếu cột không bắt đầu bằng '0' –

+0

Khi tôi nhìn thấy câu trả lời gốc, trước khi nó được chỉnh sửa ninja, nó chỉ nói "Hãy thử điều này: CHỌN QUYỀN (MyColumn, LEN (MyColumn) - 1) Điều này sẽ loại bỏ ký tự đầu tiên từ cột varchar ", đó là câu trả lời chưa hoàn chỉnh. Việc chỉnh sửa ninja không phải là một sự cải tiến, vì những lý do mà JamesZ đã nói. – LittleBobbyTables

0

Something như

SELECT CASE WHEN LEFT(Mycol,1) = '0' THEN SUBSTRING(MyCOL, 2, LEN(MyCOL)) END 
Các vấn đề liên quan