sql - SQL Server STRING_SPLIT()
问题描述
我正在尝试在列上使用此功能,但似乎不允许这样做:
如果我使用
SELECT *
FROM STRING_SPLIT('John,Jeremy,Jack', ',')
我得到值“约翰”、“杰里米”和“杰克”
虽然如果我使用:
SELECT *
FROM STRING_SPLIT(Obs, ' ')
(Obs
是文字)
或者
SELECT *
FROM STRING_SPLIT(appointments notes, ' ')
我收到错误消息:
参数数据类型 void 类型对于 string_split 函数的参数 1 无效
我什至尝试过:
SELECT *
FROM STRING_SPLIT(select obs from log, '-')
导致此错误:
关键字“select”附近的语法不正确。
消息 102,级别 15,状态 1,第 6 行
'-' 附近的语法不正确
我该如何解决这个问题?
解决方案
当您在表的列上使用 string_split() 时,您可以尝试使用交叉应用。
这是您的查询:
select value from
log cross apply STRING_SPLIT(obs,',')
DB-Fiddle 您的查询:
create table log(Obs varchar(500));
insert into log values('ohn,Jeremy,Jack');
您的查询:
select value from
log cross apply STRING_SPLIT(obs,',')
输出:
价值 |
---|
哦 |
杰里米 |
杰克 |
例子:
CREATE TABLE contacts (
id INT PRIMARY KEY IDENTITY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
phones VARCHAR(500)
);
INSERT INTO
contacts(first_name, last_name, phones)
VALUES
('John','Doe','(408)-123-3456,(408)-123-3457'),
('Jane','Doe','(408)-987-4321,(408)-987-4322,(408)-987-4323');
询问:
SELECT
first_name,
last_name,
value phone
FROM
contacts
CROSS APPLY STRING_SPLIT(phones, ',');
输出:
名 | 姓 | 电话 |
---|---|---|
约翰 | 能源部 | (408)-123-3456 |
约翰 | 能源部 | (408)-123-3457 |
简 | 能源部 | (408)-987-4321 |
简 | 能源部 | (408)-987-4322 |
简 | 能源部 | (408)-987-4323 |
db<小提琴在这里
推荐阅读
- python - python循环中的多处理
- java - 如何使用Java将文件中的特定行复制到新文件
- html - 为什么此文本溢出以及如何不使其溢出?
- java - 使用 LinkedLists 计算词频
- vue.js - 无法读取未定义 vue 的属性“0”
- javascript - 我可以在 expo 弹出后使用 expo 包吗
- python - 根据条件删除行
- python-3.x - Django 如何使用 ListView 使用 FormSet
- machine-learning - 获取 pytorch 架构的哈希值?
- javascript - 如何在 Spring Boot 中实现 User 和 Admin 控制器?