string
'dan decimal
'a kadar olan prosedürde, kültür ayarlarında bağımsız ondalık ayırıcı .
'u dönüştürmem gerekiyor. Ardından, ondalık sayının sadece .
'dan sonra 6 ondalık basamakla sınırlı olduğunu biliyorum ve .
'dan önceki rakamların sayısı üzerinde bir sınırlama yok. D
önce 9
karakterlerinizleSabit ondalık nokta karakterli TO_NUMBER işlevini kullanarak dizeden dizeye sayı nasıl dönüştürülür?
v_number := TO_NUMBER(v_string, '9999999999999999999999999999999999D999999', 'NLS_NUMERIC_CHARACTERS = ''. ''');
sayısı maksimum sayıda izin verilir: biçim dizeleri için Oracle belgelerine ve örnekler kullanarak ben şimdi sadece bu çözümü var. Bu biçim dizesini oldukça korkunç buluyorum. Bu genel dönüşüm için daha iyi bir biçim dizesi var mı, yoksa ikinci bir parametre parametresini atmanın bir yolu var mı? Genelde sadece ondalık ayırıcı .
ile dönüştürmek istediğimi söylemek için NLS parametresini çalıştırmak için geçmek gerekiyor, ancak ikinci durumda bu durumda da zorunludur.
Dize formundaki sayı her zaman '9999.99999' şeklindeyse, neden sadece TO_NUMBER() kullanıyorsunuz? Ondalıktan sonra 6 basamaklı kısıtlama koymak ister misiniz? – Chandu
@cybernate: 'to_number (: X)', oturumun NLS ayarında X'i ayrıştırır; bu, "." Dan farklı bir sayısal ayırıcıya sahip olabilir. –
@Vincent: Açıklama için Thx ... – Chandu