ďťż
 
[MS SQL] Wyswietlanie fragmentu komorki tekstowej ďťż
 
[MS SQL] Wyswietlanie fragmentu komorki tekstowej
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MS SQL] Wyswietlanie fragmentu komorki tekstowej



Mariusz M. - 14-08-2007 00:05
[MS SQL] Wyswietlanie fragmentu komorki tekstowej
  Witam. Mam następujący problem z zapytaniem do bazy MS SQL:

Mam komorke ablok.name zapisana nastepujaco jako tekst:

a / b / c / d
a / b / c
a / b / c / d
itd.

Chce wyciagnac ostatni czlon (d). Myslalem ze poradze sobie w sposob jak
ponizej, czyli uzywajac zagniezdzonych substring i charindex, jednak to
dziala prawidlowo tylko dla wartosci cztero-czlonowych. Gdy sa trzy
wartosci, to charindex wyszukujac (i nie znajdujac znaku ukosnika w koncowej
fazie) zwraca pozycje c zamiast d.

Czy jedynym wyjsciem jest uzyc funkcji T-SQL, ktorego w tej chwili nie znam?
Moze jest jakis inny sposob?

SELECT

SUBSTRING
(SUBSTRING
(SUBSTRING(ablok.name, CHARINDEX('/',ablok.name)+2,100),
CHARINDEX('/',SUBSTRING(ablok.name,
CHARINDEX('/',ablok.name)+2,100))+2,100),
CHARINDEX('/',
SUBSTRING(SUBSTRING(ablok.name,
CHARINDEX('/',ablok.name)+2,100),CHARINDEX('/',SUBSTRING(ablok.name,
CHARINDEX('/',ablok.name)+2,100))+2,100))+2,100

)

--
Pozdrawiam
Mariusz





brejk - 14-08-2007 00:05

  On 13 Sie, 16:00, "Mariusz M." <rally_...@op.pl> wrote:
> Witam. Mam następujący problem z zapytaniem do bazy MS SQL:
>
> Mam komorke ablok.name zapisana nastepujaco jako tekst:
>
> a / b / c / d
> a / b / c
> a / b / c / d
> itd.
>
> Chce wyciagnac ostatni czlon (d). Myslalem ze poradze sobie w sposob jak
> ponizej, czyli uzywajac zagniezdzonych substring i charindex, jednak to
> dziala prawidlowo tylko dla wartosci cztero-czlonowych. Gdy sa trzy
> wartosci, to charindex wyszukujac (i nie znajdujac znaku ukosnika w koncowej
> fazie) zwraca pozycje c zamiast d.
>
> Czy jedynym wyjsciem jest uzyc funkcji T-SQL, ktorego w tej chwili nie znam?
> Moze jest jakis inny sposob?
>
> SELECT
>
> SUBSTRING
> (SUBSTRING
> (SUBSTRING(ablok.name, CHARINDEX('/',ablok.name)+2,100),
> CHARINDEX('/',SUBSTRING(ablok.name,
> CHARINDEX('/',ablok.name)+2,100))+2,100),
> CHARINDEX('/',
> SUBSTRING(SUBSTRING(ablok.name,
> CHARINDEX('/',ablok.name)+2,100),CHARINDEX('/',SUBSTRING(ablok.name,
> CHARINDEX('/',ablok.name)+2,100))+2,100))+2,100
>
> )
>
> --
> Pozdrawiam
> Mariusz

SELECT CASE
WHEN CHARINDEX('/',name) = 0 THEN name
ELSE RIGHT(name,CHARINDEX('/',REVERSE(name))-1)
END AS [Ostatni czlon]
FROM ablok

A jak masz po znaku "/" spacje, to możesz zrobić tak:

SELECT CASE
WHEN CHARINDEX('/',name) = 0 THEN name
ELSE RIGHT(REPLACE(name,' /
','/'),CHARINDEX('/',REVERSE(REPLACE(name,' / ','/')))-1)
END AS [Ostatni czlon]
FROM ablok




Mariusz M. - 15-08-2007 00:00

 
Użytkownik "brejk" <pawel.potasinski@gmail.com> napisał w wiadomości
news:1187023247.034286.229230@57g2000hsv.googlegro ups.com...

> A jak masz po znaku "/" spacje, to możesz zrobić tak:

> SELECT CASE
> WHEN CHARINDEX('/',name) = 0 THEN name
> ELSE RIGHT(REPLACE(name,' /
> ','/'),CHARINDEX('/',REVERSE(REPLACE(name,' / ','/')))-1)
> END AS [Ostatni czlon]
> FROM ablok

Mam spacje zarówno przed, jak i po /. To zapytanie wyswietla mi ostatni
czlon, ale rowniez wtedy, gdy sa trzy wartosci.

Jakies pomysły?

--
Pozdrawiam
Mariusz




brejk - 15-08-2007 00:00

  On 14 Sie, 10:26, "Mariusz M." <rally_...@op.pl> wrote:
> Użytkownik "brejk" <pawel.potasin...@gmail.com> napisał w wiadomościnews:1187023247.034286.229230@57g2000hsv .googlegroups.com...
>
> > A jak masz po znaku "/" spacje, to możesz zrobić tak:
> > SELECT CASE
> > WHEN CHARINDEX('/',name) = 0 THEN name
> > ELSE RIGHT(REPLACE(name,' /
> > ','/'),CHARINDEX('/',REVERSE(REPLACE(name,' / ','/')))-1)
> > END AS [Ostatni czlon]
> > FROM ablok
>
> Mam spacje zarówno przed, jak i po /. To zapytanie wyswietla mi ostatni
> czlon, ale rowniez wtedy, gdy sa trzy wartosci.
>
> Jakies pomysły?
>
> --
> Pozdrawiam
> Mariusz

Jezeli masz maksymalnie cztery wartosci i zalezy Ci na czwartej,
jezeli takowa jest w komorce, to:

SELECT
REVERSE(
PARSENAME(
REVERSE(
REPLACE(name,' / ','.')
),4
)
)
FROM dbo.ablok





mattoid - 21-08-2007 00:07

  Dnia Mon, 13 Aug 2007 16:00:21 +0200, Mariusz M. napisał(a):

> Mam komorke ablok.name zapisana nastepujaco jako tekst:
>
> a / b / c / d
> a / b / c
> a / b / c / d
> itd.
>
> Chce wyciagnac ostatni czlon (d). Myslalem ze poradze sobie w sposob jak
> ponizej, czyli uzywajac zagniezdzonych substring i charindex, jednak to
> dziala prawidlowo tylko dla wartosci cztero-czlonowych. Gdy sa trzy
> wartosci, to charindex wyszukujac (i nie znajdujac znaku ukosnika w koncowej
> fazie) zwraca pozycje c zamiast d.

Czegoś chyba nie załapałem, ale niech tam... Po pierwsze strasznie
namotałeś jak na mój gust. Jeśli chodzi Ci o to, żeby zwrócić ostatni
człon w wierszu, to wystarczy zapytanie:

SELECT SUBSTRING(REVERSE(Tekst), 1, 1) FROM TABELA

Jeśli to nie jest to czego oczekiwałeś, to opisz dokładniej problem, bo
zazwyczaj nie mam problemu z czytaniem ze zrozumieniem, a tym razem mi
się nie udało :)

--
Pozdrawiam
mattoid
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [oracle] - Oracle SQL Developer - co to jest SID? =?ISO-8859-2?Q?[Oracle]_Wywo=B3anie_skryptu_sh_z_PL/SQL-a=3F=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shutter.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com