Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
6-6641
Jel
2003-02-10 11:24
2003.04.03
Нужно создать виртуальную сетевую карту.


1-6511
delpher_gray
2003-03-20 19:48
2003.04.03
Как склеить два файла, да так чтоб обои работали =)


1-6510
jack128
2003-03-24 14:48
2003.04.03
IniFiles в Win2K


1-6512
DeMoN-777
2003-03-24 18:10
2003.04.03
Вытаскивание нужной информации из текстовика


6-6649
ST
2003-02-12 22:48
2003.04.03
посылка нескольких e-mail





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