سؤال

ولدي جدول، المستخدمين، في قاعدة بيانات Oracle 9.2.0.6. اثنين من الحقول VARCHAR - LAST_NAME وFIRST_NAME

.

وعندما يتم إدراج الصفوف في هذا الجدول، من المفترض حقول الاسم الأول واسم العائلة ليكون في كل حالة العلوي، ولكن ما بعض القيم في هذين المجالين ومختلطة القضية.

وأريد أن تشغيل استعلام التي سوف تظهر لي كافة الصفوف في الجدول التي لها أسماء الأولى أو الأخيرة مع أحرف صغيرة في ذلك.

ولقد بحثت في النت وجدت REGEXP_LIKE، ولكن هذا يجب أن يكون لإصدارات أحدث من أوراكل - لا يبدو أن العمل بالنسبة لي

.

وشيء آخر حاولت كان لترجمة "ABCDE ... ض" إلى "$$$$$ ... $"، ثم بحث عن '$' في مجال عملي، ولكن يجب أن يكون هناك طريقة أفضل؟

ويرجع الفضل في ذلك مسبقا!

هل كانت مفيدة؟

المحلول

وماذا عن هذا:

select id, first, last from mytable
where first != upper(first) or last != upper(last);

نصائح أخرى

وأعتقد أن SQL BQ وSQL الثاني جستن يعمل، لأن في هذا السيناريو:

first_name        last_name
----------        ---------
bob               johnson
Bob               Johnson
BOB               JOHNSON

وأريد الاستعلام لي للعودة الصفوف الأولى 2.

وأريد فقط للتأكد من أن هذا سيكون استعلام كفاءة على الرغم - مائدتي لديه 500 مليون الصفوف في ذلك

.

وعندما تقول العلوي (FIRST_NAME)! = FIRST_NAME، هو "FIRST_NAME" تتعلق دائما إلى الصف الحالي الذي أوراكل تبحث في؟ كنت أخشى أن استخدام هذه الطريقة في البداية لأنني كنت أخشى أن ينتهي الانضمام إلى هذا الجدول لنفسها، لكنها الطريقة التي على حد سواء كتب SQL يبدو أن الاختيار المساواة تعمل إلا على أساس صف على حدة الصف، والتي ستعمل بالنسبة لي.

إذا كنت تبحث عن أوراكل 10g أو أعلى يمكنك استخدامها في المثال التالي. نعتبر أن كنت بحاجة لمعرفة الصفوف حيث أي من حرف في عمود غير صغيرة.

Column1
.......
MISS
miss
MiSS

في المثال أعلاه، إذا كنت بحاجة إلى العثور على miss القيم وMiSS، ثم هل يمكن استخدام الاستعلام أدناه

SELECT * FROM YOU_TABLE WHERE REGEXP_LIKE(COLUMN1,'[a-z]');
 SELECT * 
 FROM mytable 
 WHERE FIRST_NAME IN (SELECT FIRST_NAME 
                      FROM MY_TABLE
                      MINUS 
                      SELECT UPPER(FIRST_NAME) 
                      FROM MY_TABLE )

وجرب هذا:

SELECT * FROM YOU_TABLE WHERE REGEXP_LIKE(COLUMN1,'[a-z]','c'); => Miss, miss lower text
SELECT * FROM YOU_TABLE WHERE REGEXP_LIKE(COLUMN1,'[A-Z]','c'); => Miss, MISS upper text

ولخادم SQL حيث الإعداد الترتيب DB هو حالة استخدام غير مكترثة بما يلي:

SELECT * FROM tbl_user WHERE LEFT(username,1) COLLATE Latin1_General_CS_AI <> UPPER(LEFT(username,1))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top