把一個字串變成多筆資料

在我們實際的程式開發中,經常會有查詢某個欄位值在幾個選項中是否存在的情況.

 

如:

instr(',張三,李四,王五,老六,',name)>0

 

這樣字符太長可能也會影響性能.實際上我們也可以將這個字串變成一個虛擬表,

然后再將事實資料表與虛擬表關聯即可.

 

如:

select replace(regexp_substr('張三,李四,王五,老六,','.*?,',1,level),',')

from dual
connect by level<=lengthb('張三,李四,王五,老六,')-lengthb(replace('張三,李四,王五,老六,',','));

 

如果結合Oracle 9i以上支持的with語法,進行資料預處理,可能會更佳.

 

with

 t as (

select replace(regexp_substr('張三,李四,王五,老六,','.*?,',1,level),',') as name

from dual
connect by level<=lengthb('張三,李四,王五,老六,')-lengthb(replace('張三,李四,王五,老六,',',')) )

 

select * from table_name where name = t.name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,我们可以通过使用Scanner类来从控制台读取用户输入的数字字串或数字。Scanner类提供了一种简单的方式来获取用户的输入。下面是一个示例代码: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数字字串或数字:"); String input = scanner.nextLine(); try { int number = Integer.parseInt(input); System.out.println("您输入的是一个数字:" + number); } catch (NumberFormatException e) { System.out.println("您输入的是一个数字字串:" + input); } scanner.close(); } } ``` 在这个例子中,我们创建了一个Scanner对象来读取用户的输入。首先,我们输出一条提示信息,要求用户输入一个数字字串或数字。然后,我们使用`scanner.nextLine()`方法接收用户的输入,并将输入保存在变量`input`中。 接下来,我们使用`Integer.parseInt()`方法将`input`转换为整数形式。如果转换成功,说明输入是一个数字;否则,说明输入是一个数字字串。 注意,为了处理输入异常,我们使用了`try-catch`语句。当用户输入的不是一个合法的数字字串时,`parseInt()`方法会抛出一个`NumberFormatException`异常。在`catch`块中,我们打印出输入的内容,并提示用户输入的是一个数字字串。 最后,我们使用`scanner.close()`方法关闭Scanner对象,释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值