Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

сложение полей   Найти похожие ветки 

 
oss ©   (2003-03-14 13:03) [0]

выполняю запрос
select ( f1 || f2 ) res
from table
если оба поле не NULL, то результат тот что и ожидалось,
но если одно из полей NULL, то и результат тоже NULL.
Подскажите как выути из положения,
как получить в таком случае значение только одного поля ?
спасибо


 
Alexandr ©   (2003-03-14 13:04) [1]

вообще-то это говорит об неправльно спроектированной БД.


 
zacho ©   (2003-03-14 13:06) [2]

Посмотри http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1047565738&n=1
Там обсуждался аналогичный вопрос


 
stone ©   (2003-03-14 13:13) [3]

В MSSQL есть функция IsNull, которая используется для подобных целей. Если в ИБ такой функции нет, можно написать самому.


 
Anatoly Podgoretsky ©   (2003-03-14 13:21) [4]

oss © (14.03.03 13:03)
Чему равна сумма чисел 5 и "Щ", здесь тоже самое string+unknown
Правила оперированя с Unknown определены в SQL 92, рекомендую посмотреть книги Дейта и Мартина, вторая проще для чтения


 
oss ©   (2003-03-14 13:58) [5]

2Anatoly Podgoretsky ©
мне не надо их сумма математическая,
мне надо склеить два поляи они текстовые
разницу между конкатенацией (||) и суммой (+) улавливаете ?
с уважением


 
Anatoly Podgoretsky ©   (2003-03-14 14:05) [6]

Улавливаю, ну и что, конкатенация есть суть сложение, при том, что разные диалекты позволяют использовать как ||так и +, или только одно из двух.
Складывать/объединять можно только однотипные сущности, ты не можешь объединять string и unкnown
Еще раз смотри спецификацию SQL 92 прежде чем опровергать.


 
Anatoly Podgoretsky ©   (2003-03-14 14:07) [7]

Там описаны все четыре варианта
тип+тип
тип+null
null+тип
null+null

вместо плюс любое отношение


 
Wolf ©   (2003-03-14 14:25) [8]

Создать UDF, NullToStr

далее NullToStr(f1)||NullToStr(f2)

юнит.

library myUDF;

uses
SysUtils,
Classes;

{$R *.RES}

function malloc(Size: Integer): PChar; cdecl; external "msvcrt.dll";

function NullToStr(str: PCHAR):PCHAR; cdecl; export;
var
S: string;
memall: PChar;
begin
if (str = nil) then begin
S := " "
end else begin
S := str;
end;

memall := PCHAR(s);
Result := malloc(256);
StrCopy(Result, memall);
end;

exports NullToStr;

end.


Объявлние ф-ии

DECLARE EXTERNAL FUNCTION NULLTOSTR
CSTRING(255)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT "NullToStr" MODULE_NAME "MYUDF"



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-6741
Сергей Суровцев
2003-03-16 22:13
2003.04.03
Над всей Испанией безоблачное небо


9-6284
sany
2002-10-25 01:05
2003.04.03
разгоняться тормозить


1-6604
AlexMax
2003-03-22 20:24
2003.04.03
Глюки с кодировкой.


3-6369
RDA
2003-03-14 14:20
2003.04.03
FireBird - клиентская часть


3-6324
Staraya
2003-03-16 21:42
2003.04.03
Вставка записи в бд