хочу знать значение синтаксиса - PullRequest
1 голос
/ 15 апреля 2019

Кто-нибудь может объяснить приведенный ниже синтаксис, что он делает, и если у меня сумма пожертвования равна 12345.67889889, если я хочу загрузить только 12345.67, что мне нужно изменить в приведенном выше синтаксисе.

DONATION_AMOUNT NULLIF DONATION_AMOUNT = BLANKS DEFAULTIF DONATION_AMOUNT = 'NULL' "REGEXP_REPLACE(TRIM(:DONATION_AMOUNT),'[,/$]')",

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019
NULLIF DONATION_AMOUNT = BLANKS
  If the donation_amount field in the file is blank, set it to NULL in the table.

DEFAULTIF DONATION_AMOUNT = 'NULL'
  If the donation_amount field in the file = the string 'NULL', set it to NULL in the table.

"REGEXP_REPLACE(TRIM(:DONATION_AMOUNT),'[,/$]')"
  The TRIM() call removes blanks from either end of the string read from the file, 
then removes commas, slashes and dollar signs.

Чтобы обрезать до 2 десятичных знаков в дополнение к указанным выше правилам, оберните его в REGEXP_SUBSTR (), который соответствует 1 или нескольким числам, привязанным к началу строки, за которыми следует десятичная точка, за которой следует до 2 необязательных чисел .

REGEXP_SUBSTR(REGEXP_REPLACE(TRIM(:DONATION_AMOUNT),'[,/$]'), '^\d+\.\d?\d?', 1, 1)
0 голосов
/ 15 апреля 2019

Не могли бы вы использовать CAST cast(round(DONATION_MOUNT) as numeric(x,2)), где x - максимальная сумма в цифрах

...