PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
vastupidine LIKE
Postitaja: konn::: 2016-10-12 14:03:50
Tere,

kas keegi oskab vihjet anda kuidas teha mõistlikult vastupidine päring LIKE tingimusele

Tabel "users" baasis, välja nimi on "email"

user123@gmail.com
tiktak@yahoo.com
andy.wahrol@gmail.com

LIKE päring sisendi järgi

select * from users where email like '%@yahoo%'

annab antud näites ühe vaste


Mind huvitab vastupidine olukord, mul on tabel "filters", välja nimi "pattern"

@gmail.com
@yahoo.com
@dev.skype.net


a) sisend on näiteks 'bill.gates@microsoft.com', mis annab tulemuseks NULL väärtuse, kuna sellist vastet pole


b) sisend on näiteks 'bgates@gmail.com', mis annab tulemuseks ühe väärtuse, kuna vaste on olemas

'%@gmail.com%' LIKE filters.pattern


vastus olekski olemas, aga see viimane süntaks ei toimi
RE: vastupidine LIKE
Postitaja: konn::: 2016-10-12 14:21:15
ise küsin, ise vastan

select count(*) from filters where instr ( 'bill.gates@microsoft.com', pattern ) > 0;
select count(*) from filters where instr ( 'bgates@gmail.com', pattern ) > 0;
RE: vastupidine LIKE
Postitaja: konn::: 2016-10-12 14:45:11
kui nüüd keegi oskaks pakkuda välja idee, kuidas "pattern" väljas kasutada regulaaravaldist vms

nt. kõik eesti domeenid

.ee$

või sql moodi

%.ee

RE: vastupidine LIKE
Postitaja: ajalox 2016-10-12 15:27:22
RE: vastupidine LIKE
Postitaja: konn::: 2016-10-12 18:54:31
TSITEERITUD:
http://www.php.ee/foorum/index.php?post=5330

kas sa saaksid näite panna, kuidas täita tabel väli "filters.pattern"
ja milline oleks päring, tundub, et see ei ole see, mida otsin



RE: vastupidine LIKE
Postitaja: konn::: 2016-10-12 19:08:57
TSITEERITUD:
kui nüüd keegi oskaks pakkuda välja idee, kuidas "pattern" väljas kasutada regulaaravaldist vms

nt. kõik eesti domeenid

.ee$

või sql moodi

%.ee



taaskord leidsin lahenduse ise

baasi tuleb panna kanded nii: $ lõppu

@gmail.com$
@yahoo.com$
@dev.skype.net$
.ee$

select count(*) from filters where instr ( 'bill.gates@microsoft.com' || '$', pattern ) > 0; -> 0
select count(*) from filters where instr ( 'bgates@gmail.com' || '$', pattern ) > 0; -> 1
select count(*) from filters where instr ( 'bgates@mail.ee' || '$', pattern ) > 0; -> 1
select count(*) from filters where instr ( 'bgates@mail.eee' || '$', pattern ) > 0; -> 0


postitasin selle siia, sest võibolla on kellelegi abiks
RE: vastupidine LIKE
Postitaja: asd 2016-10-12 19:31:15
n'aiteks nii:
SELECT email FROM `users` where SUBSTRING_INDEX(email, '@', -1) NOT IN('mail.ee', 'hot.ee')

Sa vyiksid lugeda ka dokumentatsiooni http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
RE: vastupidine LIKE
Postitaja: konn::: 2016-10-12 20:03:13
TSITEERITUD:
n'aiteks nii:
SELECT email FROM `users` where SUBSTRING_INDEX(email, '@', -1) NOT IN('mail.ee', 'hot.ee')

Sa vyiksid lugeda ka dokumentatsiooni http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
tänud lingi eest!

kahjuks pole sellega palju pealehakata:

a) tegu on MySQL spetsiifiliste funktsioonidega, mind huvitab sqlite
b) sinu näide filtreerib kogu domeeni, kuid kui mind huvitab mingi osa domeenist, nt. tippdomeen ".ru" või ".ch", siis see enam ei päde

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0990478992462