Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  sql'is kuvatakse realt 1 sõna märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
muri666
HV kasutaja

liitunud: 29.04.2004




sõnum 26.02.2009 17:01:51 sql'is kuvatakse realt 1 sõna vasta tsitaadiga

Sqlis ühes veerus on rida tekstiga: "tere-mida-iganes". Kuidas ma saaksin teha päringu, et päringu tulemus kuvaks ainult sõna "mida"? Et nagu päring näitaks andmeid peale esimest - kuni teise - alguseni.
Kommentaarid: 40 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 38
tagasi üles
vaata kasutaja infot saada privaatsõnum
kiiver
HV vaatleja

liitunud: 03.04.2003




sõnum 26.02.2009 17:56:38 vasta tsitaadiga

Oracles saab järgmise päringuga:

select substr('tere-mida-iganes'
, instr('tere-mida-iganes', '-') + 1
, instr('tere-mida-iganes', '-', 1, 2) - instr('tere-mida-iganes', '-') - 1
)
from dual;
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
mark11
HV vaatleja

liitunud: 28.01.2006




sõnum 26.02.2009 18:57:42 vasta tsitaadiga

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
muri666
HV kasutaja

liitunud: 29.04.2004




sõnum 27.02.2009 11:44:15 vasta tsitaadiga

ms sqlis kuidagi ei taha tööle saada icon_confused.gif
Kommentaarid: 40 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 38
tagasi üles
vaata kasutaja infot saada privaatsõnum
kiiver
HV vaatleja

liitunud: 03.04.2003




sõnum 27.02.2009 12:19:02 vasta tsitaadiga

proovi nii
SELECT SUBSTRING('tere-mida-iganes'
, CHARINDEX('-', 'tere-mida-iganes')+1
, CHARINDEX('-', 'tere-mida-iganes', CHARINDEX('-', 'tere-mida-iganes')+1) - (CHARINDEX('-', 'tere-mida-iganes')+1))
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
muri666
HV kasutaja

liitunud: 29.04.2004




sõnum 27.02.2009 12:41:48 vasta tsitaadiga

jap, nii kuvatakse ainult sõna mida.
Aga kui mul lause "tere-mida-iganes" on tabelis, siis ei taha tulla

SELECT SUBSTRING('tabel.veerg'
, CHARINDEX('-', 'tabel.veerg')+1
, CHARINDEX('-', 'tabel.veerg', CHARINDEX('-', 'tabel.veerg')+1) - (CHARINDEX('-', 'tabel.veerg')+1))
Kommentaarid: 40 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 38
tagasi üles
vaata kasutaja infot saada privaatsõnum
reneSharp
HV kasutaja
reneSharp

liitunud: 13.11.2005




sõnum 27.02.2009 13:53:20 vasta tsitaadiga


declare @test table  (sona varchar(255))
insert into @test (sona) values ('tere-mida-iganes')
insert into @test (sona) values ('tere-mida-veel-iganes')

select substring(t.sona,
               charindex('-',t.sona)+1,
               len(t.sona)-charindex('-',t.sona)-charindex('-',reverse(t.sona))
               )
               
                from @test t


Su lause töötaks kui kirjutada nii:


       SELECT SUBSTRING(t.veerg
, CHARINDEX('-', t.veerg)+1
, CHARINDEX('-', t.veerg, CHARINDEX('-', t.veerg)+1) - (CHARINDEX('-', t.veerg)+1)) from @test t


või :


SELECT SUBSTRING(t.[veerg]
, CHARINDEX('-', t.[veerg])+1
, CHARINDEX('-', t.[veerg], CHARINDEX('-', t.[veerg])+1) - (CHARINDEX('-', t.[veerg])+1)) from @test t


Kuna veeru nimetus oli sul '' märkide vahel siis käsitleti seda kui stringi, mitte veergu select lauses.
Kommentaarid: 25 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 25
tagasi üles
vaata kasutaja infot saada privaatsõnum
mirko28
Aeg maha 1p
mirko28

liitunud: 31.12.2003




sõnum 24.04.2009 20:22:59 vasta tsitaadiga

Võib ka luua funktsiooni Split, mis paneb stringi massiivi, stringi eraldajaks kriipsuke '-', sealt küsid teise elemendi.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  sql'is kuvatakse realt 1 sõna
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.