سؤال
أنا أستخدم REPLACE في طريقة عرض SQL لإزالة المسافات من رقم الخاصية.يتم إعداد الوظيفة مثل هذا REPLACE(pin, ' ', '').على الشاشة الخضراء بدا الاستعلام جيدًا.في أي شيء آخر نحصل على القيم السداسية للأحرف الموجودة في الحقل.أنا متأكد من أنه شيء ترميز، ولكن كيف يمكنني إصلاحه؟
فيما يلي البيان الذي استخدمته لإنشاء العرض:
CREATE VIEW RLIC2GIS AS SELECT REPLACE(RCAPIN, ' ', '') AS
RCAPIN13 , RLICNO, RONAME, ROADR1, ROADR2, ROCITY, ROSTAT, ROZIP1,
ROZIP2, RGRID, RRADR1, RRADR2, RANAME, RAADR1, RAADR2, RACITY,
RASTAT, RAZIP1, RAZIP2, REGRES, RPENDI, RBLDGT, ROWNOC, RRCODE,
RROOMS, RUNITS, RTUNIT, RPAID, RAMTPD, RMDYPD, RRFUSE, RNUMCP,
RDATCP, RINSP, RCAUKY, RCAPIN, RAMTYR, RYREXP, RDELET, RVARIA,
RMDYIN, RDTLKI, ROPHN1, ROPHN2, ROCOM1, ROCOM2, RAPHN1, RAPHN2,
RACOM1, RACOM2, RNOTES FROM RLIC2
تحديث:لقد نشرت الجواب أدناه.
المحلول
لقد انتهى بنا الأمر باستخدام concat وsubstring للحصول على النتائج التي أردناها.
CREATE VIEW RLIC2GIS AS
SELECT CONCAT(SUBSTR(RCAPIN,1,3),CONCAT(SUBSTR(RCAPIN,5,2),
CONCAT(SUBSTR(RCAPIN,8,2), CONCAT(SUBSTR(RCAPIN,11,3),
SUBSTR(RCAPIN, 15,3))))) AS CAPIN13, RLICNO, RONAME, ROADR1,
ROADR2, ROCITY, ROSTAT, ROZIP1, ROZIP2, RGRID, RRADR1, RRADR2,
RANAME, RAADR1, RAADR2, RACITY, RASTAT, RAZIP1, RAZIP2, REGRES,
RPENDI, RBLDGT, ROWNOC, RRCODE, RROOMS, RUNITS, RTUNIT, RPAID,
RAMTPD, RMDYPD, RRFUSE, RNUMCP, RDATCP, RINSP, RCAUKY, RCAPIN,
RAMTYR, RYREXP, RDELET, RVARIA, RMDYIN, RDTLKI, ROPHN1, ROPHN2,
ROCOM1, ROCOM2, RAPHN1, RAPHN2, RACOM1, RACOM2, RNOTES FROM RLIC2
نصائح أخرى
قد تكون المشكلة هنا هي أن ما تعتقد أنه الحرف الفارغ في هذا الحقل هو في الواقع حرف آخر غير قابل للطباعة.
يمكنك استخدام SQL التالي لمعرفة حرف ASCII الموجود في الموضع الرابع:
select ascii(substr(RCAPIN,4,1))
FROM YOUR-TABLE
بعد ذلك ستتمكن من استخدام استبدال لهذا الحرف بدلاً من المساحة الفارغة:
select replace(RCAPIN,chr(9))
FROM YOUR-TABLE
حاول استخدام NULL بدلاً من سلسلة فارغة.أي.استبدال (RCAPIN، ' '، NULL)