Главная страница
    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.46 MB
Время: 0.01 c
14-6662
Егорычев Михаил
2003-03-17 18:39
2003.04.03
Browser на API - окне


4-6855
stainer
2003-02-03 13:22
2003.04.03
ishellbrowser


14-6705
Softik
2003-03-15 16:35
2003.04.03
Подскажите аналог QReport, который быстрее и по функциональнее!


3-6362
Kern
2003-03-14 13:09
2003.04.03
Printer is not a valid


1-6484
kingdom2000
2003-03-24 14:48
2003.04.03
орфографя в TRichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский