- 1
SELECT * FROM order WHERE coalesce(cancelation_date,\'7777-07-07\'::DATE) >= :tdDate
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
SELECT * FROM order WHERE coalesce(cancelation_date,\'7777-07-07\'::DATE) >= :tdDate
0
if length(varrstr(cellphoneidx) != 11) or regexp_instr(varrstr(cellphoneidx), '\d\d\d\d\d\d\d\d\d\d') = 0 then
return 1;
end if;
Проверка на валидность номера телефона (с вкраплениями pl/sql):
И так везде, где требуется проверка на определенное количество цифр (номер инн, док-ов и т.д.).
Псц, товарищи.
+1
SUM(
CAST (
SUBSTRING(CAST([PercentAmount] AS VARCHAR),1, CHARINDEX ('.',[PercentAmount])-1)
+ '.'
+ SUBSTRING(CAST([PercentAmount] AS VARCHAR),CHARINDEX('.',[PercentAmount])+1, 2+CHARINDEX ('.',[PercentAmount]))
AS MONEY))
А как вы достигаете точности в 2 знака после запятой?
0
CREATE TABLE [dbo].[TBL_JOUR_PRODUCTION_PLAN_KK_BH](
[JPPKKBH_ID] [uniqueidentifier] NOT NULL,
[JPPKKBH_JPKKBH_ID] [uniqueidentifier] NOT NULL,
[JPPKKBH_WC_ID] [int] NOT NULL,
[JPPKKBH_DATE] [datetime] NOT NULL,
[JPPKKBH_QTY] [numeric](30, 5) NOT NULL,
[JPPKKBH_QTYF] [numeric](30, 5) NOT NULL,
[JPPKKBH_COMENT] [varchar](8000) NULL,
[JPPKKBH_DESCRIPTION] [varchar](8000) NOT NULL,
[JPPKKBH_WHO] [varchar](150) NOT NULL,
[JPPKKBH_WHO_ID] [uniqueidentifier] NOT NULL,
[JPPKKBH_WHEN] [datetime] NOT NULL,
(
CREATE TABLE [dbo].[TBL_JOUR_PRODUCTION_PLAN_KK_BH_HISTORY](
[JPPKKBHH_ID] [uniqueidentifier] NOT NULL,
[JPPKKBHH_JPPKKBH_ID] [uniqueidentifier] NOT NULL,
[JPPKKBHH_JPPKKBH_JPKKBH_ID] [uniqueidentifier] NOT NULL,
[JPPKKBHH_JPPKKBH_WC_ID] [int] NOT NULL,
[JPPKKBHH_JPPKKBH_DATE] [datetime] NOT NULL,
[JPPKKBHH_JPPKKBH_QTY] [numeric](30, 5) NOT NULL,
[JPPKKBHH_JPPKKBH_QTYF] [numeric](30, 5) NOT NULL,
[JPPKKBHH_JPPKKBH_COMENT] [varchar](8000) NULL,
[JPPKKBHH_JPPKKBH_DESCRIPTION] [varchar](8000) NOT NULL,
[JPPKKBHH_JPPKKBH_WHO_ID] [uniqueidentifier] NULL,
[JPPKKBHH_JPPKKBH_WHEN] [datetime] NOT NULL,
[JPPKKBHH_OPER] [int] NOT NULL,
[JPPKKBHH_WHO_ID] [uniqueidentifier] NOT NULL,
[JPPKKBHH_WHEN] [datetime] NOT NULL,
(
no comments
0
create or replace function TO_NUMBER_EX (sNumber in varchar2) return number is
---------------------------------------------------------------------
-- Преобразование строки в число с разными символами разделителями
---------------------------------------------------------------------
iRet number(12,3) :=0;
cReplSgn char(1);
cToReplSgn char(1);
begin
begin
iRet := to_number(sNumber);
exception
when OTHERS then
iRet := null;
end;
if iRet is null then
begin
if instr(sNumber,'.') > 0 then
cReplSgn := '.';
cToReplSgn := ',';
else
cReplSgn := ',';
cToReplSgn := '.';
end if;
iRet := to_number(replace(sNumber,cReplSgn,cToReplSgn));
exception
when OTHERS then
iRet := null;
end;
end if;
return(nvl(iRet,0));
end TO_NUMBER_EX;
PL/SQL
велосипедно-костыльное программирование с неожиданными значениями по умолчанию
0
function try_to_date(p_value in varchar2)
return date
is
l_date date;
l_fmt sys.odcivarchar2list := sys.odcivarchar2list('DD.MM.YYYY', 'YYYY/MM/DD', 'YYYY.MM.DD', 'dd.mm.yyyy', 'yyyy/mm/dd', 'yyyy.mm.dd');
begin
for i in 1..l_fmt.count loop
begin
l_date := to_date(p_value, l_fmt(i));
return l_date;
exception
when OTHERS then null;
end;
end loop;
return null;
end;
−1
cTemp := trim(to_char(xxx.VALUE, '999999.90'));
if substr(cTemp, 1, 1) = '.' then
sText := '0'||cTemp;
else
sText := cTemp;
end if;
PL/SQL, я блять выучил маски!
0
if @SubDepartmentID = 0 set @SubDepartmentID = null
if @QuoteID = 0 set @QuoteID = null
if @PartnerID = 0 set @PartnerID = null
if @QuoteID = 0 set @QuoteID = null
if @SubDepartmentID = 0 set @SubDepartmentID = null
это кусок хранимой процедуры
0
SELECT CASE WHEN MIN (t.start_date) IS NULL THEN TO_DATE ('31/12/4712', 'DD/MM/YYYY')
ELSE MIN (t.start_date) END
FROM my_table t, ...
NVL/COALESCE придумали лентяи!
Это маленький кусочек запроса размером порядка 35 КБ. Там весь этот запрос прекрасен чуть менее чем полностью...
−682
CREATE FUNCTION this_function_check_first_payment_under_agreement_without_previous_periods
(
....
Ну вот сразу всё понятно)