Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将搜索参数显示为列_Sql_Oracle_Oracle11g - Fatal编程技术网

Sql 将搜索参数显示为列

Sql 将搜索参数显示为列,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,目前,我面临一个问题,即在“Like”语句中将搜索参数显示为1个新列。我的SQL代码如下: Select A.Description from table A Where A.Description like ('%Battery%') 输出: Description 12V Battery 9V Battery 5V Battery 我想要的输出是: Description Description_1 12V Battery Battery 9V Battery Ba

目前,我面临一个问题,即在“Like”语句中将搜索参数显示为1个新列。我的SQL代码如下:

 Select A.Description from table A Where A.Description like ('%Battery%')
输出:

Description 
12V Battery
 9V Battery
 5V Battery
我想要的输出是:

Description   Description_1
12V Battery   Battery
 9V Battery   Battery
 5V Battery   Battery

不可能这样做吗

把它包括在
SELECT
语句中怎么样

SELECT  A.Description ,
       'Battery' AS Description_1
FROM    table A 
WHERE   A.Description LIKE '%Battery%'
比如:

Oracle 11g R2架构设置

CREATE TABLE table_name ( Description ) AS
          SELECT '9V Battery' FROM DUAL
UNION ALL SELECT '12V Battery' FROM DUAL
UNION ALL SELECT '24V Battery' FROM DUAL
UNION ALL SELECT 'Torch' FROM DUAL
UNION ALL SELECT 'Rope' FROM DUAL;
WITH search_terms AS (
            SELECT 'Battery' AS search_term FROM DUAL
  UNION ALL SELECT 'Torch' FROM DUAL
)
SELECT A.Description,
       s.search_term AS Description_1
FROM   table_name A
       INNER JOIN
       search_terms s
       ON ( A.Description LIKE '%' || search_term || '%' )
| DESCRIPTION | DESCRIPTION_1 |
|-------------|---------------|
|  9V Battery |       Battery |
| 12V Battery |       Battery |
| 24V Battery |       Battery |
|       Torch |         Torch |
查询1

CREATE TABLE table_name ( Description ) AS
          SELECT '9V Battery' FROM DUAL
UNION ALL SELECT '12V Battery' FROM DUAL
UNION ALL SELECT '24V Battery' FROM DUAL
UNION ALL SELECT 'Torch' FROM DUAL
UNION ALL SELECT 'Rope' FROM DUAL;
WITH search_terms AS (
            SELECT 'Battery' AS search_term FROM DUAL
  UNION ALL SELECT 'Torch' FROM DUAL
)
SELECT A.Description,
       s.search_term AS Description_1
FROM   table_name A
       INNER JOIN
       search_terms s
       ON ( A.Description LIKE '%' || search_term || '%' )
| DESCRIPTION | DESCRIPTION_1 |
|-------------|---------------|
|  9V Battery |       Battery |
| 12V Battery |       Battery |
| 24V Battery |       Battery |
|       Torch |         Torch |

CREATE TABLE table_name ( Description ) AS
          SELECT '9V Battery' FROM DUAL
UNION ALL SELECT '12V Battery' FROM DUAL
UNION ALL SELECT '24V Battery' FROM DUAL
UNION ALL SELECT 'Torch' FROM DUAL
UNION ALL SELECT 'Rope' FROM DUAL;
WITH search_terms AS (
            SELECT 'Battery' AS search_term FROM DUAL
  UNION ALL SELECT 'Torch' FROM DUAL
)
SELECT A.Description,
       s.search_term AS Description_1
FROM   table_name A
       INNER JOIN
       search_terms s
       ON ( A.Description LIKE '%' || search_term || '%' )
| DESCRIPTION | DESCRIPTION_1 |
|-------------|---------------|
|  9V Battery |       Battery |
| 12V Battery |       Battery |
| 24V Battery |       Battery |
|       Torch |         Torch |
或者,如果仅使用单个搜索词,则可以将命名的子查询替换为:

这个查询怎么样:

with tab as
(select 'Battery' FILTER
   from dual)
Select A.Description, B.filter
  from table_name A, tab B 
 Where A.Description like '%'|| b.filter ||'%';
输出

| DESCRIPTION |  FILTER |
|-------------|---------|
|  9V Battery | Battery |
| 12V Battery | Battery |
| 24V Battery | Battery |

将过滤器放入查询
选择双电源中的“电池”过滤器

如果不对“电池”进行硬编码,则无法执行此操作?我希望显示放置在“like”中的搜索参数。首先,您是如何将
battery
放在
like
子句中的?与上面的显示相同。因为我有很多搜索参数,我使用'OR'语句将它们连接起来。在比较了此方法的3个参数后,我发现联合更可靠。然而,查询出我想要的东西需要很长时间。