mysql怎么把固定的几个字符串,转成列的形式作为临时表查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql怎么把固定的几个字符串,转成列的形式作为临时表查询相关的知识,希望对你有一定的参考价值。

比如:
'39982665399','39023431098','39764974481','39055572973','39897342743','40127675336','40174795679'
有这么几个数字,怎么写sql能出来列的效果比如:
|id|
|'39982665399'|
|'39023431098'|
|'39764974481'|
|'39055572973'|
|'39897342743'|
|'40127675336'|
|'40174795679'|

db2数据库 有个values函数可用于你说的这种操作,但是mysql本身是 没有这样的函数的。

下面是取巧的一种写法,也能得到你想要的数据。如图:

select 
    trim(substring_index(substring_index(a.num,',',b.help_topic_id + 1),',' ,- 1)) AS numb
from (
select 
    '39982665399,39023431098,39764974481,39055572973,39897342743,40127675336,40174795679' as num 
from dual ) a 
JOIN apsc.help_topic b ON b.help_topic_id <(length(a.num) - length( REPLACE(a.num, ',', '') ) + 1 )


希望能帮到你!

参考技术A

db2数据库 有个values函数可用于你说的这种操作,但是mysql本身是 没有这样的函数的。

下面是取巧的一种写法,也能得到你想要的数据。如图:

12345678910

select     trim(substring_index(substring_index(a.num,',',b.help_topic_id + 1),',' ,- 1)) AS numbfrom (select     '39982665399,39023431098,39764974481,39055572973,39897342743,40127675336,40174795679' as num from dual ) a JOIN apsc.help_topic b ON b.help_topic_id <(length(a.num) - length( REPLACE(a.num, ',', '') ) + 1 )  希望能帮到你!
参考技术B CREATE TEMPORARY TABLE tmp_table (
 name VARCHAR(10) NOT NULL
);

insert into tmp_table (name) values ('name1'),('name2'),('name3');


参考技术C 字符串按照逗号切割,切割后 插入临时表,然后输出临时表即可 参考技术D


用oracle模拟实现下,mysql中就需要考虑下dual的另类表达方式

在delphi中如何把大的字符串分成固定大小的几个小字符串

假设我有一个CString=1234567890;的字符串,怎么可以把它分割成(3个是一个小字符串)
CString1=123;
CString2=456;
CString3=789;
ctring4=0
在delphi中哦

用Copy啊。

给你随手写了一个:

procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
s1, s2, s3, s4: String;
i: Integer;
begin
s := '1234567890';

i := 1;
s1 := Copy(s, i, 3);
ShowMessage(s1);
Inc(i, 3);
s2 := Copy(s, i, 3);
ShowMessage(s2);
Inc(i, 3);
s3 := Copy(s, i, 3);
ShowMessage(s3);
Inc(i, 3);
s4 := Copy(s, i, 1);
ShowMessage(s4);
end;
参考技术A 没分,你也太抠了
procedure TForm1.Button1Click(Sender: TObject);
var
CString,CString1,CString2,CString3,CString4:string;
begin
CString:='1234567890';
CString1:=Copy(CString,1,3);//拷贝从第1个字符开始的3个字符
CString2:=Copy(CString,4,3);//拷贝从第4个字符开始的3个字符
CString3:=Copy(CString,7,3);
CString4:=Copy(CString,10,1);
end;
回答完毕,谢谢。。。。
参考技术B copy('abcde',3,2);
3表示从第几个取起,2表示取几个。结果为cde

以上是关于mysql怎么把固定的几个字符串,转成列的形式作为临时表查询的主要内容,如果未能解决你的问题,请参考以下文章

怎样把DataTable中的一列数据转换成数组

怎么把pandas multiindex转换成列

SQL中怎么将行转成列?

SQL中怎么将行转成列?

在delphi中如何把大的字符串分成固定大小的几个小字符串

用winform怎么实现图片列表展示,类似于淘宝网上成列的商品一样,可以上下翻页