【问题标题】:How to use concat in web2py dal select query?如何在 web2py dal 选择查询中使用 concat?
【发布时间】:2015-06-25 09:25:49
【问题描述】:

我有一张如下表,

| 身份证 | 姓名 |

| 1 |富 |

| 2 |酒吧 |

我想编写一个选择查询,它应该在 id 之前返回一些前置文本。所以我的输出应该类似于 val_1 和 val_2。 我在 web2py 选择查询中看不到任何 concat 方法。为了达到我的要求,我需要单独操作结果。有没有办法在 web2py 中形成选择查询以使用 SQL concat?

【问题讨论】:

  • 您好,不确定 web2py,但 sqlite 到 concat 字符串的语法应该类似于 SELECT 'val_' || id AS id, name FROM table... 看看here 是不是你的意思
  • @AleksandarMiladinovic 我希望它在 web2py DAL 中完成。不管怎样,谢谢你的建议

标签: sqlite web2py


【解决方案1】:

.select() 方法可以将 SQL 表达式作为除字段之外的参数,所以你可以这样做:

val = "'val_' || mytable.id"
rows = db(db.mytable).select(val)
print rows[0][val]

注意,当在 select 中使用表达式时,结果值存储在行对象中,其键与 SQL 表达式本身等效,因此使用[val] 从行对象中提取值。

作为上述方法的替代方案,您可以考虑使用computed fieldvirtual field

【讨论】:

  • 效果很好。在我的例子中,字符串 'val_' 会动态变化。所以我会使用第一个。我希望我们在定义表格时在虚拟字段中提供动态值。
  • 是否可以替换 mytable.id 中的值?如果有任何文件,请分享我。我找不到任何东西:|
  • 关于 'val_' 动态变化,您也可以使用虚拟字段来做到这一点。关于替换“id”字段本身的值,不,您不会这样做,因为 DAL 要求“id”字段是自动递增的整数字段。
  • 我的意思是当我检索 id 时,我想用其他值替换它。假设 id 为 0,我希望它作为空字符串返回。
  • 如果你能弄清楚SQL返回你想要的值,你可以使用上面的方法。否则,您可以使用计算域或虚拟域,这允许您使用 Python 代码生成所需的值。根据您的用例,也可以简单地为“id”字段指定一个“represent”属性,该属性可用于自动转换SQLTABLESQLFORM.grid 和只读表单中的显示值(或在其他情况下调用Rows.render 方法时。
猜你喜欢
  • 2015-07-19
  • 2012-02-22
  • 2013-07-17
  • 2017-04-08
  • 2012-05-12
  • 2019-06-29
  • 2013-03-08
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多