PostgreSQL - كيفية التحقق مما إذا كانت بياناتي تحتوي على شرطة مائلة عكسية
-
22-08-2019 - |
سؤال
حدد العد (*) من الجدول حيث يشبه العمود '%/%'؛
يعطيني عدد القيم التي تحتوي على "/"
كيف تفعل الشيء نفسه بالنسبة لـ "\"؟
المحلول
SELECT count(*)
FROM table
WHERE column ILIKE '%\\\\%';
نصائح أخرى
ومقتطفات من مستندات :
<اقتباس فقرة>لاحظ أن مائل بالفعل معنى خاص في سلسلة حرفية، لذلك لكتابة ثابت النمط الذي يحتوي على مائل يجب أن تكتب اثنين الخطوط المائلة العكسية في بيان SQL (على افتراض تركيب سلسلة الهروب يستخدم، انظر القسم 4.1.2.1). وهكذا، وكتابة النمط الذي يطابق الواقع مائل الحرفي يعني كتابة أربعة خطوط مائلة عكسية في البيان. يمكنك تجنب هذا عن طريق اختيار حرف الهروب مختلف مع ESCAPE. ثم مائل ليس خاص لمثل بعد الآن. (لكنه لا يزال خاصا لمحلل الحرفي سلسلة، لذلك كنت لا تزال بحاجة اثنين منهم.)
اقتباس فقرة>والأفضل من ذلك - لا تستخدم مثل، ومجرد استخدام موقف القياسية:
select count(*) from from table where 0 < position( E'\\' in column );
انت تحتاج E'\\\\'
لأن الحجة ل LIKE
هو regex و regex escape char موجود بالفعل \
(على سبيل المثال ~ E'\\w'
سيطابق أي سلسلة تحتوي على حرف قابل للطباعة).
انظر وثيقة