PDA

View Full Version : سوال: یک ارر جالب در query



alimooghashang
پنج شنبه 10 مرداد 1387, 15:30 عصر
با سلام

من یه query نوشتم که در اون یه کاراکتر - (dash) وجود داره

و ارر میده

جالبیش اینه که dash رو هم که برداشتم به نقطه گیر میداد

اینه:

select * from table where fieldname like '%www.site-name.com%'

و یه سوال
مگه mysql_query مقدار true و false بر نمیگردونه؟

tabib_m
پنج شنبه 10 مرداد 1387, 17:33 عصر
کوئریت رو اینجوری کن:


select * from `table` where `fieldname` regexp 'www.site-name.com'



و یه سوال
مگه mysql_query مقدار true و false بر نمیگردونه؟
نه!! کی یه همچین حرفی زده؟؟
اینجا رو بخون: http://ir.php.net/manual/en/function.mysql-query.php

vahid4134
پنج شنبه 10 مرداد 1387, 19:46 عصر
کوئریت رو اینجوری کن:


select * from `table` where `fieldname` regexp 'www.site-name.com'

نه!! کی یه همچین حرفی زده؟؟
اینجا رو بخون: http://ir.php.net/manual/en/function.mysql-query.php
دلیل اینکه شما از regexp به جای like استفاده کردید چی هست؟ (برای اطلاع بیشتر پرسیدم وگرنه به دانش شما شکی نیست)

alimooghashang
پنج شنبه 10 مرداد 1387, 20:02 عصر
میشه لطفا بگین regexp دقیقا چی کار میکنه؟
چه فرقی با like داره؟

مرسی

tabib_m
پنج شنبه 10 مرداد 1387, 23:55 عصر
regexp کاری میکنه که اگر فیلد مذکور شامل مقدار مورد نظر باشه، رکورد انتخاب بشه. (دقیقا همون کاری که شما سعی داشتی با like انجام بدی) فرقش با like اینه که اگه بخوای با like این کار رو بکنی، باید از کاراکتر % استفاده کنی، ولی با regexp (که مخفف regular expression هست = عبارت با قاعده) نیازی به استفاده از علائم نیست... برای اطلاعات دقیق تر به اینجا مراجعه کنید: http://dev.mysql.com/doc/refman/5.0/en/regexp.html

موفق باشید.

mn3250
جمعه 11 مرداد 1387, 00:30 صبح
البته در نظر داشته باشید سرعت regexp پائینه و بار سرور رو بالا میبره.
کوئری هم اشکالی نداره.

alimooghashang
جمعه 11 مرداد 1387, 06:42 صبح
خیلی ممنون
مشکل حل شد

vahid4134
یک شنبه 13 مرداد 1387, 15:46 عصر
regexp کاری میکنه که اگر فیلد مذکور شامل مقدار مورد نظر باشه، رکورد انتخاب بشه. (دقیقا همون کاری که شما سعی داشتی با like انجام بدی) فرقش با like اینه که اگه بخوای با like این کار رو بکنی، باید از کاراکتر % استفاده کنی، ولی با regexp (که مخفف regular expression هست = عبارت با قاعده) نیازی به استفاده از علائم نیست... برای اطلاعات دقیق تر به اینجا مراجعه کنید: http://dev.mysql.com/doc/refman/5.0/en/regexp.html

موفق باشید.

من هم می خواستم بگم که استفده از عبارات باقاعده وقتی که توابع عادی می تونند این کار رو انجام بدهند باعث کند شدن سیستم میشه چون یک موتور دیگه باید اجرا بشه و این موتور هم خودش کندتر از توابع ساده عمل می کنند

yaqubian
یک شنبه 13 مرداد 1387, 16:21 عصر
با سلام

من یه query نوشتم که در اون یه کاراکتر - (dash) وجود داره

و ارر میده

جالبیش اینه که dash رو هم که برداشتم به نقطه گیر میداد

اینه:

select * from table where fieldname like '%www.site-name.com%'

و یه سوال
مگه mysql_query مقدار true و false بر نمیگردونه؟

دوست عزیز
البته اگه دستورت رو اینجوری بنویسی درست می شه

select * from table where fieldname like \"%www.site-name.com%\"
موفق باشید