Databáze > MS SQL

SQL asi chyba pro dnešní den

(1/2) > >>

Radek Červinka:
Náhodou se mi podařilo vytvořit zajímavou konstrukci, takže pro zajímavost


--- Kód: ---select top 10 + ' some ' + dcNumber, 'xx' +++++++++ ' some '+dcNumber from tTest

nebo
select top 10 + ' - '+ dcNumber, +++++++++ ' - '+dcNumber from tTest


--- Konec kódu ---

kde dcNumber je nejaky VARCHAR sloupec z tabulky tTest, coz ve výsledku projde a vrátí to 10 záznamů , kde to před + (nebo mezi +) bere asi jako nula mezer (ale ne NULL)

Nebo je to definované chování?



98690:
Nikde se o vicenasobnem spojovacim + operatoru nepise (zdroj), ale do stavu NULL se zda se nevyhodnoti (alespon ve verzi kterou mam). Staci kratky test, kdyz povolis CONCAT_NULL_YIELDS_NULL, pak by multiple + operator ktery by evaluoval do stavu NULL vratil ve vysledku NULL, coz se mi na Microsoft SQL Server Express 12.0.2000.8 v nasledujicim prikazu spustenem v Management Studiu nepodarilo:


--- Kód: MySQL ---SET CONCAT_NULL_YIELDS_NULL ON;  GOSELECT 'Concatenate' +++++++ ' me'; -- if multiple consequent + operators here evaluated to NULL, this would return NULLGO
Tipoval bych ze tech vicero spojovacich + operatoru parser prikazu proste zahodi (ignoruje). A asi tomu tak je i v pripade aritmetickeho + operatoru (ostatni multiplikovane aritmeticke operatory mi parser prikazu nepovolil; navic by napr. vicenasobny - znamenal komentar), podarilo se mi spustit i:


--- Kód: MySQL ---SELECT 1 +++++++ 1; -- huh?

Radek Červinka:
Jo to jsem psal, ze to neni NULL.

mne pobavilo i to

--- Kód: ---SELECT top 10 + ' - '+ dcNumber ....

--- Konec kódu ---

tj. 10 + ' - ', ale ve skutecnosti vezme top 10 a pak zbytek je pak + ' - ' + sloupec, coz byl zacatek jak jsem na to prisel

98692:

--- Citace: Radek Červinka  19-01-2018, 15:41:17 ---Jo to jsem psal, ze to neni NULL.

mne pobavilo i to

--- Kód: ---SELECT top 10 + ' - '+ dcNumber ....

--- Konec kódu ---

tj. 10 + ' - ', ale ve skutecnosti vezme top 10 a pak zbytek je pak + ' - ' + sloupec, coz byl zacatek jak jsem na to prisel

--- Konce citace ---

Tomu nerozumim. Resultset je u me v poradku. Je ten TOP relevantni? Nemas na mysli jen:


--- Kód: MySQL ---SELECT +++++++ 'I am a string concatenated with what?';

Radek Červinka:

--- Citace: Delfin  19-01-2018, 15:45:52 ---
--- Citace: Radek Červinka  19-01-2018, 15:41:17 ---Jo to jsem psal, ze to neni NULL.

mne pobavilo i to

--- Kód: ---SELECT top 10 + ' - '+ dcNumber ....

--- Konec kódu ---

tj. 10 + ' - ', ale ve skutecnosti vezme top 10 a pak zbytek je pak + ' - ' + sloupec, coz byl zacatek jak jsem na to prisel

--- Konce citace ---

Tomu nerozumim. Resultset je u me v poradku. Je ten TOP relevantni? Nemas na mysli jen:

--- Konce citace ---

Mejme tabulku treba se 100 radky, ten TOP 10 vrati jen 10 zaznamu, ale ten zapis
SELECT top 10 + ' - '+ dcNumber mne svadi k tomu, abych to precetl jako 10 + ' - ' + obsah sloupce. Myslel jsme ze to parser vyhodi jako chybu, ale on ne,
on si odrizene SELECT TOP 10 a pak zbytek vyhodnoti s plusem na zacatku.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi