1
我有一個名爲lis_pendens的表和一個名爲docket_entries的表。每個lis_pendens記錄都有很多docket_entries,其中docket_entries的外鍵是case_id。如果docket_entries的描述字段包含文本'writ'或'title'或'sale'或'dismissal',那麼我不想在結果集中返回關聯的lis_penden記錄。否則,如果屬於lis_pendnes記錄的docket_entries都不包含這些關鍵字,那麼我想返回結果集中的lis_pendens記錄。mysql正則表達式不返回正確的結果
這裏是我創建的查詢:我想查詢是好的
SELECT lis_pendens.id as id
FROM lis_pendens
INNER JOIN docket_entries
ON docket_entries.case_id = lis_pendens.id
WHERE no_foreclosure_sale_created_at IS NULL
AND NOT EXISTS (
SELECT 1 FROM docket_entries AS e
WHERE e.case_id = lis_pendens.id
AND LOWER(e.description) REGEXP 'writ|title|sale|dismissal'
) GROUP BY id
,但它每生產lis_pendens記錄在數據庫中,即使其中的一些lis_pendens記錄有關聯docket_entries其描述字段包含此:
Notice of Voluntary Dismissal
Notice of Dismissal & Discharge of Lis Pendens
Certificate of Title
...
很明顯,查詢出了問題。我究竟做錯了什麼?
有什麼'description'列的數據類型?我猜這是一個blob類型,因爲二進制數據不匹配字符數據,除非八位字節是相同的,而'LOWER()'不理解如何操作沒有字符集的數據(因爲blob不' T)。嘗試使用AND CAST(e.description AS CHAR)REGEXP'令牌|銷售|解僱'......這可能會訣竅。 –