CTL导入特定字符串置NULL

sqlloader的CTL导入数据

最近做项目遇到一个问题,就是ctl导入数据时要某字段读取到的特定的字符串设置为空,比如当filmNum字段读取”n.e.”这种格式的数据时,存到数据库为NULL。filmNum在数据库的类型是INTEGER。
通过查阅,可以用下面的格式:

 filmNum CHAR NULLIF(filmNum="n.e.")    "TO_NUMBER(TRIM(:filmNum))"  

后面根据项目需要,又要filmNum字段读取”n.p.”这种格式的数据时也置空。也就是当filmNum读取到”n.e.”或”n.p.”数据时,保存到数据库为NULL。可以用下面格式:

    filmNum CHAR "CASE WHEN :filmNum ='n.e.' THEN NULL WHEN :filmNum ='n.p.'  THEN NULL ELSE TO_NUMBER(TRIM(:filmNum)) END" 

至此,问题解决。
希望能帮助遇同问题的猿猴们。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的参考代码,可以实现 cc2530 定时发送字符串并进入睡眠模式的功能: ```c #include "ioCC2530.h" #define TIMER_PRESCALER 128 // 定时器预分频器设为128 #define TIMER_PERIOD 62500 // 定时器计数值设为62500,相当于1s void InitUART(void) { // 设串口波特率为115200 PERCFG &= ~0x40; P0SEL |= 0x0C; P2DIR &= ~0xC0; U0CSR |= 0x80; U0GCR |= 11; U0BAUD = 216; U0CSR &= ~0x80; } void SendString(char *str) { // 发送字符串 while (*str != '\0') { U0DBUF = *str; while (!(U0CSR & 0x02)); U0CSR &= ~0x02; str++; } } void InitTimer(void) { // 设定时器 T2CTL |= 0x04; T2CTL &= ~0x03; T2CTL &= ~0x18; T2CTL |= 0x08; T2PR = TIMER_PRESCALER - 1; T2 = TIMER_PERIOD; T2CTL |= 0x10; } void EnterSleepMode(void) { // 进入睡眠模式 PCON |= 0x01; _BIS_SR(LPM3_bits + GIE); } void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器 InitUART(); InitTimer(); while (1) { SendString("Hello, world!\r\n"); EnterSleepMode(); } } ``` 在这个例子中,我们使用 cc2530 的串口模块来发送字符串,使用定时器模块来定时发送字符串,并在发送完毕后进入睡眠模式。在代码中,我们设了定时器的预分频器为128,计数值为62500,这样定时器的周期就是1秒。当定时器定时到达时,会触发定时器中断,并调用 EnterSleepMode 函数来进入睡眠模式。在睡眠模式中,cc2530 会进入低功耗状态,以节省功耗。 当您使用这个参考代码时,需要注意以下几点: 1. 根据您的具体需求修改定时器的预分频器和计数值,以达到您想要的定时周期; 2. 根据您的具体需求修改 SendString 函数中要发送的字符串; 3. 根据您的具体需求修改 EnterSleepMode 函数中的睡眠模式和触发条件。 希望这个参考代码能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值