sql按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便

sql代码如下:

CREATE function Get_StrArrayStrOfIndex 

@str varchar(1024), --要分割的字符串 
@split varchar(10), --分隔符号 
@index int --取第几个元素 

returns varchar(1024) 
as 
begin 
declare @location int 
declare @start int 
declare @next int 
declare @seed int 

set @str=ltrim(rtrim(@str)) 
set @start=1 
set @next=1 
set @seed=len(@split) 

set @location=charindex(@split,@str) 
while @location<>0 and @index>@next 
begin 
set @start=@location+@seed 
set @location=charindex(@split,@str,@start) 
set @next=@next+1 
end 
if @location =0 select @location =len(@str)+1 
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。 

return substring(@str,@start,@location-@start) 
end 

调用: select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是代码实现: ```c++ #include<iostream> #include<string> #include<vector> using namespace std; class Student { public: Student(string name, int id, string course, double score) { this->name = name; this->id = id; this->course = course; this->score = score; count++; } string getName() { return name; } int getId() { return id; } string getCourse() { return course; } double getScore() { return score; } static int count; private: string name; int id; string course; double score; }; int Student::count = 0; void printInfo(Student *stu) { cout<<"姓名:"<<stu->getName()<<endl; cout<<"学号:"<<stu->getId()<<endl; cout<<"课程:"<<stu->getCourse()<<endl; cout<<"成绩:"<<stu->getScore()<<endl; } int main() { vector<Student> students; students.push_back(Student("张三", 1001, "语文", 90)); students.push_back(Student("李四", 1002, "数学", 85)); students.push_back(Student("王五", 1003, "英语", 92)); students.push_back(Student("赵六", 1004, "物理", 88)); students.push_back(Student("孙七", 1005, "化学", 86)); students.push_back(Student("周八", 1006, "历史", 89)); students.push_back(Student("吴九", 1007, "地理", 91)); students.push_back(Student("郑十", 1008, "政治", 87)); students.push_back(Student("钱十一", 1009, "生物", 90)); students.push_back(Student("马十二", 1010, "体育", 93)); int id; cout<<"请输入要查询的学生的学号:"; cin>>id; for(Student &stu : students) { if(stu.getId() == id) { printInfo(&stu); break; } } return 0; } ``` 输出结果为: ``` 请输入要查询的学生的学号:1005 姓名:孙七 学号:1005 课程:化学 成绩:86 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值