sql - 如何选择一定长度的数值数据
问题描述
我正在尝试选择大于 5 个字节的数字数据。我输入了以下内容,但收到错误错误:函数长度需要字符表达式作为参数 1。不确定我做错了什么。任何帮助将不胜感激。
29 PROC SQL;
30 CREATE TABLE WORK.FILTER_FOR_FDRMASTER_DAILY__0000 AS
31 SELECT t1.Account_id_nr,
32 t1.Predecessor_CC_SK,
33 t1.Successor_CC_SK,
34 t1.Related_CC_SK,
35 t1.Original_CC_SK,
36 t1.Predecessor_Argt_SK,
37 t1.Successor_Argt_SK,
38 t1.Predecessor_OK,
39 t1.Successor_OK,
40 t1.CHD_SSR_IN,
41 t1.CHD_SYSTEM_BANK,
42 t1.USAANR
43 FROM WORK.FILTER_FOR_FDRMASTER_DAILY_2 t1
44 WHERE t1.Successor_CC_SK NOT = . AND t1.CHD_SSR_IN = 'Y' AND t1.CHD_SYSTEM_BANK NOT BETWEEN '867700000100' AND
45 '867700009500' AND LENGTH(t1.Successor_CC_SK) > '5'
46 ORDER BY t1.Successor_CC_SK;
解决方案
由于您同时处理信用卡号和 5 位数字,我们假设它们都可以以三种格式之一存储:
Num: 1234567890123456
Char: 1234-5678-9012-3456
Char: 1234 5678 9012 3456
让我们从第一种情况开始,它假设变量是数字的。您想排除所有 5 位数的值。您可以使用Rick Wicklin 的这个技巧来计算整数中的位数:
proc sql noprint;
create table want as
select number
from have
where ceil(log10(number+1)) > 5
;
quit;
对于第二种和第三种情况,它们将被存储为字符。countc()
您可以使用该D
选项计算字符串中数字字符的数量。
proc sql noprint;
create table want as
select compress(number, ' -')
from have
where countc(number,'','D') > 5
;
quit;
推荐阅读
- typescript - 如何在javascript中使用来自其他常量的变量?
- user-interface - 即使所有服务都在运行并且 9870 端口正在侦听,也无法访问 Hadoop Web 界面
- macos - 无法与非 AWS 服务通话
- sql - 如何使用连接 ID 在 SQL Server 的循环中将表插入 N 次?
- javascript - Javascript / jQuery HTML5 视频 - 使用监听器捕获 net::ERR_SSL_PROTOCOL_ERROR
- node.js - 处理构建到与源不同目录中的节点服务器的相对路径
- python-3.x - Bitbucket:ModuleNotFoundError:没有名为“numpy”的模块
- mysql - 对于这个复杂的数据,查询应该是什么样子?
- discord - 从 webhook 编辑不和谐消息
- r - 使用 RJDBC 访问 Redshift 时如何使用 AWS 命名配置文件