日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量

發(fā)布時(shí)間:2024/9/19 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sql - 如何在PostgreSQL查詢中聲明變量

如何聲明變量以用于PostgreSQL 8.3查詢?

在MS SQL Server中,我可以這樣做:

DECLARE @myvar INT

SET @myvar = 5

SELECT *

FROM somewhere

WHERE something = @myvar

我如何在PostgreSQL中做同樣的事情? 根據(jù)文檔變量被簡(jiǎn)單地聲明為“名稱類型;”,但這給了我一個(gè)語(yǔ)法錯(cuò)誤:

myvar INTEGER;

有人能給我一個(gè)正確語(yǔ)法的例子嗎?

8個(gè)解決方案

146 votes

我通過(guò)使用WITH條款完成了相同的目標(biāo),它沒(méi)有那么優(yōu)雅,但可以做同樣的事情。 雖然這個(gè)例子真的有點(diǎn)過(guò)分。 我也不特別推薦這個(gè)。

WITH myconstants (var1, var2) as (

values (5, 'foo')

)

SELECT *

FROM somewhere, myconstants

WHERE something = var1

OR something_else = var2;

fei0x answered 2019-05-09T12:34:14Z

65 votes

PostgreSQL中沒(méi)有這樣的功能。 您只能在pl / PgSQL(或其他pl / *)中執(zhí)行此操作,但不能在純SQL中執(zhí)行此操作。

一個(gè)例外是WITH ()查詢,它可以作為變量,甚至tuple的變量。 它允許您返回臨時(shí)值表。

WITH master_user AS (

SELECT

login,

registration_date

FROM users

WHERE ...

)

SELECT *

FROM users

WHERE master_login = (SELECT login

FROM master_user)

AND (SELECT registration_date

FROM master_user) > ...;

J.Wincewicz answered 2019-05-09T12:33:48Z

53 votes

你也可以在PLPGSQL中試試這個(gè):

DO $$

DECLARE myvar integer;

BEGIN

SELECT 5 INTO myvar;

DROP TABLE IF EXISTS tmp_table;

CREATE TABLE tmp_table AS

SELECT * FROM yourtable WHERE id = myvar;

END $$;

SELECT * FROM tmp_table;

以上要求Postgres 9.0或更高版本。

Dario Barrionuevo answered 2019-05-09T12:34:46Z

36 votes

這取決于您的客戶。

但是,如果您使用的是psql客戶端,則可以使用以下命令:

my_db=> \set myvar 5

my_db=> SELECT :myvar + 1 AS my_var_plus_1;

my_var_plus_1

---------------

6

Shahriar Aghajani answered 2019-05-09T12:35:18Z

34 votes

動(dòng)態(tài)配置設(shè)置

你可以“濫用”動(dòng)態(tài)配置設(shè)置:

-- choose some prefix that is unlikey to be used by postgres

set session my.vars.id = '1';

select *

from person

where id = current_setting('my.vars.id')::int;

配置設(shè)置始終是varchar值,因此在使用它們時(shí)需要將它們轉(zhuǎn)換為正確的數(shù)據(jù)類型。 這適用于任何SQL客戶端,而postgresql.conf僅適用于postgresql.conf

以上要求Postgres 9.2或更高版本。

對(duì)于以前的版本,變量必須在使用之前在postgresql.conf中聲明,因此它在一定程度上限制了它的可用性。 實(shí)際上不是變量完全,但配置“類”本質(zhì)上是前綴。 但是一旦定義了前綴,就可以使用任何變量而無(wú)需更改postgresql.conf

a_horse_with_no_name answered 2019-05-09T12:36:12Z

18 votes

使用pl / PgSQL之外的臨時(shí)表

除了建議使用pl / pgsql或其他pl / *語(yǔ)言之外,這是我能想到的唯一其他可能性。

begin;

select 5::int as var into temp table myvar;

select *

from somewhere s, myvar v

where s.something = v.var;

commit;

Evan Carroll answered 2019-05-09T12:36:45Z

6 votes

我想提議對(duì)@ DarioBarrionuevo的答案進(jìn)行改進(jìn),以便更簡(jiǎn)單地利用臨時(shí)表。

DO $$

DECLARE myvar integer = 5;

BEGIN

CREATE TEMP TABLE tmp_table ON COMMIT DROP AS

-- put here your query with variables:

SELECT *

FROM yourtable

WHERE id = myvar;

END $$;

SELECT * FROM tmp_table;

bluish answered 2019-05-09T12:37:10Z

2 votes

以下是使用PREPARE語(yǔ)句的示例。 您仍然無(wú)法使用?,但您可以使用$n表示法:

PREPARE foo(integer) AS

SELECT *

FROM somewhere

WHERE something = $1;

EXECUTE foo(5);

DEALLOCATE foo;

Martin Zinovsky answered 2019-05-09T12:37:36Z

總結(jié)

以上是生活随笔為你收集整理的postgres 显示变量_sql - 如何在PostgreSQL查询中声明变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无码人妻丰满熟妇区bbbbxxxx | 日本xxxx裸体xxxx | 国产成人精品aa毛片 | 毛片的网站 | 欧美一级片在线免费观看 | 亚洲蜜臀av乱码久久精品蜜桃 | 亚洲成人一二三区 | 亚洲精品男人天堂 | aaa人片在线 | 欧美日韩中出 | 欧美一区二区三区激情视频 | 免费看国产黄色 | 美女裸体网站久久久 | 亚洲一二三四在线观看 | 九九精品视频在线 | 99日精品| 91麻豆一区二区三区 | 中文字幕一区二区三区人妻电影 | 久草视频免费在线播放 | 国产毛片久久久久久国产毛片 | 国产黄a三级三级三级看三级男男 | 欧美在线视频不卡 | 激情伦成人综合小说 | 国产av一区二区三区 | 亚洲永久精品在线观看 | 亚洲精选在线观看 | 国产一线天粉嫩馒头极品av | 午夜精品视频在线观看 | 日韩欧美成人免费视频 | 少妇又色又紧又大爽又刺激 | 欧美成人dvd在线视频 | 少妇一级淫免费播放 | 91久久一区二区 | 国产乱码精品一区二区三区亚洲人 | 三上悠亚在线播放 | 国产精品50页 | 强公把我次次高潮hd | 天天狠狠操 | 亚洲欧洲成人在线 | 欧美亚洲第一页 | 日韩一区二区三区久久 | 三级在线网址 | 狠狠a| 国产浮力影院 | 亚洲欧美日韩国产综合 | 亚洲国产日韩一区无码精品久久久 | 国产超碰人人爽人人做人人爱 | 日日摸日日添日日碰9学生露脸 | gav久久| 中文字幕成人在线视频 | 日本高清不卡一区 | 国产视频在 | 一级毛片黄片 | 99精品久久久久久 | 欧美综合网站 | 亚洲国产乱 | 青青草欧美 | 国产精品怡红院 | 久久神马影院 | 色八区 | 日韩精品区 | 午夜激情免费 | 青青草久久久 | 国产免费av网站 | 99福利视频导航 | 日本妈妈9 | 国模无码视频一区 | 久久久无码18禁高潮喷水 | 亚洲天堂第一 | 亚洲自拍中文字幕 | 欧美区在线观看 | 亚洲色图欧洲色图 | 极品少妇视频 | 日韩视频在线观看 | 欧美日日| 欧美精品一级二级 | xxxx黄色| 国产电影一区在线观看 | 青青伊人精品 | 中国在线观看免费高清视频播放 | 日本午夜一区 | 婚后打屁股高h1v1调教 | 国产又粗又猛又爽又黄又 | 桃色成人网 | 美女高潮网站 | 男人的天堂一区二区 | 成人深夜在线观看 | 精品久久久久久久久中文字幕 | 久久婷婷五月综合 | 91久色 | 亚洲精品一品 | 欧洲一区二区三区 | 精品亚洲一区二区三区四区五区 | 久久国产柳州莫菁门 | 91精品视频观看 | 日韩激情电影在线 | 亚洲天堂资源网 | 亚洲av无码专区在线 | 青青伊人国产 |