Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
8-6624
Calm
2002-12-27 09:57
2003.04.03
Управление порядком примитивов в собственном граф. редакторе.


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


14-6757
Думкин
2003-03-17 11:33
2003.04.03
Весна


3-6342
Vladislav1
2003-03-14 10:21
2003.04.03
Как создать временную таблицу?


3-6321
StarCon
2003-03-17 13:44
2003.04.03
ADO и DBF




   Наверх