作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的表格如下:
a | b
-----
1 | a
2 | b
在我的查询中,我想根据列的类型更改 order by 子句。
有点像
get_data($order_by_column) {
....
ORDER BY
CASE
WHEN is_numeric($order_by_column) THEN $order_by_column
ELSE CHAR_LENGTH($order_by_column)
END
}
我检查过,似乎很难像上述查询那样动态确定列类型。实现这一目标的替代方案(或替代方案)是什么?
最佳答案
您可能对 pg_typeof()
感兴趣:
ORDER BY
CASE pg_typeof($order_by_column)
WHEN 'integer'::regtype THEN $order_by_column
-- WHEN 'text'::regtype THEN ...
-- WHEN 'boolean'::regtype THEN ...
ELSE length($order_by_column)
END
请注意,CASE
语句的分支需要返回匹配的类型,这里恰好是这种情况,因为 $order_by_column
和 length($order_by_column )
都返回 integer
。
更多关于 object identifier types like regtype
in the manual .
查找所有注册类型:
SELECT * from pg_type
再次,更多关于pg_type
in the manual .
关于sql - ORDER BY 取决于列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224164/
我是一名优秀的程序员,十分优秀!