簡體   English   中英

Postgres-如何從表中獲取轉義數據

[英]Postgres - How to fetch escaped data from table

解決方案似乎很簡單,但我發現很難解決。 在表中,樣本數據如下:

 id   |               name               |        created_time        
 -------+----------------------------------+----------------------------
41477 | women''s hostels                 | 2016-03-24 13:52:52.855116
41476 | women''s hostels                 | 2016-03-24 13:52:49.895482
41475 | women''s hostels                 | 2016-03-24 13:52:49.735788
41471 | men''s hostel                    | 2016-03-24 13:52:42.907983
41469 | women''s clothing shops          | 2016-03-24 13:52:30.666364

我已使用PHP的PDO預准備語句插入了此數據,因此單引號已正確轉義。

現在我想獲取名稱完全匹配的記錄

婦女旅館

我想使用原始SQL查詢和PDO通過兩種方式完成此操作。 在這兩種情況下,我都嘗試執行以下操作,但未得到任何結果:

原始SQL:

SELECT id FROM <TABLE> where name = 'women''s hostels';
SELECT id FROM <TABLE> where name ilike 'women''s hostels';
SELECT id FROM <TABLE> where name::text = 'women''s hostels';

PDO:

$data = "women''s hostels";
$sql = "SELECT id FROM <TABLE> where name=?"; (tried all variations as above)
$stmt->execute(array($data));
$rows = $stmt->fetchAll();

名稱字段在表中定義如下:

Column    |            Type             | 
name      | character varying(255)      |  

請幫忙。 讓我知道是否還有其他需要。 任何幫助將不勝感激。

首先,數據庫中不應有轉義數據。

我已使用PHP的PDO預准備語句插入了此數據,因此單引號已正確轉義。

他們沒有。

如果他們正確地逃脫了,您將在數據庫“ women's hostels”中找到原始字符串。 但是,當您對數據庫中的數據進行轉義時,這意味着轉義發生了兩次

因此,您必須搜尋並刪除插入過程中多余的轉義。

然后選擇通常的數據方式。 是否包含引號都沒有關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM