- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
declare @billing_types table(k int null, t varchar(14)
collate SQL_Latin1_General_CP1255_CI_AS)
insert @billing_types
values (1, 'אשרי')
,(2, 'צ׳ק')
,(3, 'הוראת קבע')
declare @standing_order_status table(i int null, s varchar(14)
collate SQL_Latin1_General_CP1255_CI_AS)
insert @standing_order_status
values (4, 'מבותל')
,(3, 'לא מאושר')
,(2, 'ממתין')
,(1, 'מאושר')
declare @fax varchar(20)
select billing_company_id
,internal_company_name
,isnull(t, 'לא פעיל') collate SQL_Latin1_General_CP1255_CI_AS as payment_type_string
,case when company_email is null then ''
when replace((ltrim(rtrim(company_email))), '0', '') = '' then ''
-- some emails were imported in the way, they aren't valid
when charindex('@', company_email) = 0 then ''
else (ltrim(rtrim(company_email))) end as email
,case when replace(ltrim(rtrim(company_fax)), '0', '') = ''
then ''
when -- some times there are words like "none", "n/a" etc. in there
replace(replace(replace(replace(replace(replace(replace(
replace(replace(replace(replace(ltrim(rtrim(company_fax)), '-', ''),
'0', ''), '1', ''), '2', ''), '3', ''), '4', ''), '5', ''), '6', ''),
'7', ''), '8', ''), '9', '') != ''
then ''
else replace(ltrim(rtrim(company_fax)), '-', '')
end as c_fax
,ltrim(rtrim(company_address)) as c_address
,ltrim(rtrim(cast(company_comments as varchar(1000)))) as c_comments
,invoice_send_with_details
,invoice_send_fax
,invoice_print
,ltrim(rtrim(cc_name)) as c_name
,ltrim(rtrim(cc_number)) as c_number
,ltrim(rtrim(cc_cvv)) as c_cvv
,ltrim(rtrim(cc_id)) as c_id
,ltrim(rtrim(cc_expire)) as c_expire
,ltrim(rtrim(bank_number)) as number
,ltrim(rtrim(bank_branch)) as branch
,ltrim(rtrim(bank_account)) as account
,bank_hoshen
,isnull(s, 'אין') collate SQL_Latin1_General_CP1255_CI_AS as order_status
from billing_companies
left join @billing_types bt on bt.k = payment_type
left join @standing_order_status os on os.i = bank_standing_order_status
Война. Экспорт в Эксель, для того, чтобы потом ее обратно, но уже другим людям в базу передать.
Из интересных подробностей. Поле "факс" в базе имеет тип varchar(50), например. Никакой серверной валидации отродясь не было. Иногда люди просто путали факс и электорпочту, когда заполняли данные.
wvxvw 13.03.2013 19:11 # 0
уже нашел.
eth0 13.03.2013 20:01 # 0
DBdev 13.03.2013 20:09 # 0
הו חרא
wvxvw 13.03.2013 20:13 # 0
mac-t 13.03.2013 23:41 # 0
wvxvw 14.03.2013 10:33 # 0
Но тут есть еще один момент: этот код готовился для использования с bcp, т.е. нужно лучить данные в правильном виде без необходимости последующей доработки.
А кроме того, есть еще и такое обстоятельство: это уже чисто теоретический вопрос, но тем не менее. Мне, возможно, не хватает опыта, чтобы судить, но пока что у меня складывается впечатление, что лучше, когда данные максимально строго обрабатываются на уровне базы данных, а не на уровне приложения, работающего с базой данных. Чтобы данные строже обработать нужно больше возможностей. Тех же регулярных выражений, работы с коллекциями, возможности использовать известные алгоритмы и идиомы из других областей программирования - а для этого нужны функции, переменные, циклы и т.п. Т.е. на мой взгляд, лучше потрудиться и написать триггер / констрейнт, который будет следить за правильностью данных, чем полагаться на приложение, работающее с базой в том, что оно не допустит неправильный ввод.
zim 14.03.2013 11:04 # +3
Daiver 26.05.2013 19:45 # 0
Это же кто так пишет?
Нужно писать אשראי
>Никакой серверной валидации отродясь не было.
А может она по идее должна была производиться на клиенте до отсылки на сервер, но по каким-то причинам ее потеряли.
wvxvw 26.05.2013 20:27 # 0
Daiver 26.05.2013 20:38 # 0
insert @billing_types // виды оплаты
values (1, 'אשרי') // а тут по идее кредитка должна быть
,(2, 'צ׳ק') // чек
,(3, 'הוראת קבע') // постоянное распоряжение банку
>заставили все глаголы в сослогательные наклонении переделать в мужской род
Ну, в документации обычно все в мужском роде используется.
wvxvw 26.05.2013 21:32 # 0
Я этот текст по кусочкам копировал из разных мест. Не факт, что оно все однородное / имеет смысл. Кроме того, я просто не ставлю никогда иврит - избавляет от такого количества головной боли, что даже не верится. Текст копировался откуда-то. Меня угнетает даже не столько разбирать эти закорючки, сколько никогда не работающее выравнивание / форматирование / цифры / пунктуация и т.д.
Слава богу по-работе сейчас мне никогда его ни читать ни писать не нужно, но увы нужно будет сдавать на диплом...
Daiver 26.05.2013 21:38 # 0
wvxvw 26.05.2013 21:50 # 0
Daiver 26.05.2013 22:01 # 0
wvxvw 26.05.2013 22:29 # 0
По работе - вот это был единственный раз, когда требовалось что-то сделать на иврите (я там больше не работаю). Все более-менее серьезное программирование, которое есть в этой маленькой но гордой стране работает на англоязычный рынок. Тут просто без вариантов - никакого иврита. Конторки которые работают на внутренний рынок - жалкое зрелище. Во всех отношениях.
Читать местную прессу? - так это ж просто убожество...
Литература на иврите? Кино? - просто смешно.
В то же время, практически везде в той или иной мере можно обойтись английским.
Но, как бы да... в проекте попрощаться с маленькой но гордой и податься куда подальше от религиозных мудаков всяких расцветок, армейского режима и национального характера. Одно только опасение, что национальный характер может оказаться заразительным.