簡體   English   中英

如何在SQL的一個字段中搜索某個部分?

[英]how to search a certain part in one field on SQL?

我正在使用 Codeigniter 執行一些任務,但在查詢搜索中遇到問題。 我在mysql中有以下數據:

order_billing
--------------
19001-00001-32222
13501-00021-31122
13344-02351-16072
18701-00001-30922
11123-12301-12122

order_billing 有 3 部分格式:number_1 number_1-number_2-number_3 number_2 number_1-number_2-number_3

我像這樣制作搜索表格

<input type="text" name="order_billing_1">-
<input type="text" name="order_billing_2">-
<input type="text" name="order_billing_3"> 

有條件時如何進行 SQL 查詢

  • 輸入“order_billing_1”搜索“number_1”
  • 輸入“order_billing_2”搜索“number_2”
  • 輸入“order_billing_3”搜索“number_3”

我做了一些這樣的代碼

$post = $this->input->post();
$search['number_1'] = $post['order_billing_1'];
$search['number_2'] = "-".$post['order_billing_2'];
$search['number_3'] = "-".$post['order_billing_3'];

和這樣的查詢

$this->db->like('order_billing', '$search['number_1']', 'after');
$this->db->or_like('order_billing', '$search['number_2']', 'both');
$this->db->or_like('order_billing', '$search['number_3']', 'before');

但它仍然不正確。 我仍然困惑如何在手動 SQL 查詢中進行這樣的搜索。

$search['number_1'] = $post['order_billing_1'];
$search['number_2'] = "-".$post['order_billing_2'];
$search['number_3'] = "-".$post['order_billing_3'];

查詢

Select * from TABLE WHERE order_billing like ????

有誰知道如何解決這個問題。?

你為什么不把它做成一根長繩?

$order_billing = $post['order_billing_1']."-".
                 $post['order_billing_2']."-".
                 $post['order_billing_3'];

然后您可以在一個簡單的查詢中使用它。

請注意,我使用$post而不是$_POST來模仿您所做的。

在你想要的普通 SQL 中

SELECT * FROM TABLE WHERE order_billing = CONCAT('13344','-','02351','-','16072')

order_billing是單列,因此需要使用單個字符串進行搜索。 CONCAT()將您的三個輸入字段放入一個字符串中。 還有很多其他方法可以做到這一點。

當心 SQL 注入。 並考慮規范化。

like '%something%' ”在其他文本之間搜索“something”

假設您正在搜索“1234”

對於訂單計費 1 使用 -> like '1234-%'用於訂單計費 2 使用 -> like '%-1234-%'用於訂單計費 3 使用 -> like '%-1234'

暫無
暫無

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

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