在select中使用变量(需要撇号)

时间:2017-04-02 19:42:01

标签: postgresql

psql(9.6.1,server 9.5.5)

员工

     Column     |            Type             |                            Modifiers                            | Storage  | Stats target | Description 
----------------+-----------------------------+-----------------------------------------------------------------+----------+--------------+----    ---------
 employee_id    | integer                     | not null default nextval('employees_employee_id_seq'::regclass) | plain    |              | 
 first_name     | character varying(20)       |                                                                 | extended |              | 
 last_name      | character varying(25)       | not null                                                        | extended |              | 
 email          | character varying(25)       | not null                                                        | extended |              | 
 phone_number   | character varying(20)       |                                                                 | extended |              | 
 hire_date      | timestamp without time zone | not null                                                        | plain    |              | 
 job_id         | character varying(10)       | not null                                                        | extended |              | 
 salary         | numeric(8,2)                |                                                                 | main     |              | 
 commission_pct | numeric(2,2)                |                                                                 | main     |              | 
 manager_id     | integer                     |                                                                 | plain    |              | 
 department_id  | integer 

对于自学,我想使用变量。

此请求的结果适合我:

hr=> select last_name, char_length(last_name) as Length from employees where substring(last_name from 1 for 1) = 'H' order by last_name;
 last_name | length 
-----------+--------
 Hartstein |      9
 Higgins   |      7
 Hunold    |      6
(3 rows)

但是对于自我教育,我想使用变量:

\set chosen_letter 'H'
hr=> select last_name, char_length(last_name) as Length from employees where substring(last_name from 1 for 1) = :chosen_letter order by last_name;
ERROR:  column "h" does not exist
LINE 1: ...ployees where substring(last_name from 1 for 1) = H order by...
                                                             ^

那些撇号似乎毁了一切。我无法解决这个问题。

您能否帮我理解如何使用变量获取上述结果?

1 个答案:

答案 0 :(得分:2)

尝试使用:

\set chosen_letter '''H'''