Главная страница
    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.008 c
4-6850
badaxe
2003-02-05 11:42
2003.04.03
Отслеживание клавы и мыши


14-6688
NetBreaker666
2003-03-18 22:07
2003.04.03
Каким образом создать Popup меню в стиле WinXP


1-6523
NAlexey
2003-03-20 14:13
2003.04.03
EncodeDateTime...


3-6360
Grey
2003-03-14 11:29
2003.04.03
Что лучше , filter или locate ?


7-6820
mmmh
2003-02-07 20:26
2003.04.03
Люди как можно переделать стандартные виндовские часики? Хочу сде





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский