sql - 创建表时的 Postgres 格式
问题描述
我的工作是测试 Postgres。我通常使用带有 Oracle 和 Teradata 语法的 SAS 编写 SQL。我们的测试数据库有一个非常草率的表,其中每一列都创建为字符 255。我有一个非常简单的事情正在尝试做,但它不起作用。我想创建一个新表并从 255 重新格式化为 10。我还想删除所有尾随空格。此外,“IS NULL”不起作用。即使没有任何可见的值。
PROC SQL;
CONNECT TO POSTGRES(&connectstuff);
EXECUTE(CREATE TABLE common.UNQ_NUM_LIST AS
SELECT DISTINCT UNIQUE_NUM,
BTRIM(PAT_ACCT) AS PAT_ACCT
FROM ACCT_DATA.ACCNTS
) by postgres;
DISCONNECT FROM POSTGRES;
QUIT;
我想将 PAT_ACCT 创建为字符 10 格式,但不确定如何。创建表格时可以指定新格式吗?我尝试过的一切都没有奏效。甚至 BTRIM 实际上似乎也没有摆脱该值的尾随空格。同样,“IS NULL”无法识别空值。我觉得这应该很简单!
解决方案
要影响数据类型,请在查询中适当地转换结果列:
CAST (btrim(pat_acct) AS character(10)) AS pat_acct
但是,没有办法以NOT NULL
这种方式设置列。
我建议您执行两条语句:一条以您想要的方式创建表,另一条如
INSERT INTO ...
SELECT ... FROM ...
推荐阅读
- windows - 如何使用命令提示符创建 zip 文件夹?
- ios - 如何从 Ionic 4.7.1 中的 ion-item 中删除箭头(仅限 IOS)
- java - 二维数组仍然为空
- jquery - 无法使用 jquery 访问 gridview 控件
- reactjs - 在 react-admin 中使用 API 调用的默认值填写创建表单
- php - 如何在我循环的两个页面之间增加一个变量
- python - OpenCv Circle reshape() 和语法的基础是什么?
- android - 如何在 Android 上获得模糊效果?
- javascript - 使用单个 HTML 页面替换内部 HTML 是否是不好的做法?与许多其他页面?
- cassandra - 如何在 Cassandra 中构建动态查询?