2 senllang senllang 于 2016.09.23 11:20 提问

在postgresql 中,如何把拼接的字符串当变量名使用?

ftdata record;
tmpsql := 'select md5('' ftdata.' || column_name || ''')';
execute tmpsql into tmpmd5;

ftdata是个纪录类型,数据是表的一行,想把列表在存储过程中查出来,再拼成ftdata.column_name,再取这一列的值,计算值的md5

4个回答

qq221746
qq221746   2016.09.23 11:47

tmpsql := 'select md5(ftdata.' || column_name || ')';

senllang
senllang 这个不行啊
大约一年之前 回复
senllang
senllang ERROR: missing FROM-clause entry for table "ftdata" LINE 1: select md5(ftdata.eid) ^
大约一年之前 回复
senllang
senllang   2016.09.23 14:04

表的字段是动态查出来的,比如表table1(f1,f2,f3)有三个字段,有一行数据('abc','def','op');

column_name varchar; column_name的值可能就是f1;
ftdata.column_name 实际就是 ftdata.f1;

最后select md5(ftdata.f1); 为 select md5('abc');

为了函数的通用,这里是想在存储过程中动态查出表字段,然后计算md5,

senllang
senllang   2016.09.23 14:05

SQL中,不知道有没有这种用法;初学啊,请大牛赐教!

senllang
senllang   2016.09.23 14:06

还有啊,如何这种方式不能用,那还有什么方法,把这个函数写的通用一些,不用在参数里面把表字段传进来

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!