sql - 在某个字符 SQL 之后动态提取字符串
问题描述
我想从一个/任何符号之后的列中提取某个短语。例如,如果我想从SQL-Tutorial中提取Tutorial,下面的查询就足够了。
SELECT SUBSTRING('SQL-Tutorial', 5, 8) AS ExtractString;
如果我想从列中的以下字段中提取“-”或“_”之前或之后的所有内容怎么办?
- SQL 教程
- Oracle-教程
- IBM DB2 教程
- Sybase ASE 教程
- PostgreSQL-教程
- MariaDB-教程
- MySQL-教程
- Teradata-教程
- IBM Informix 教程
- Amazon SimpleDB-教程
解决方案
CREATE TABLE #Table1
([COLN] varchar(24))
;
INSERT INTO #Table1
([COLN])
VALUES
('SQL-Tutorial'),
('Oracle-Tutorial'),
('IBM DB2-Tutorial'),
('Sybase ASE-Tutorial'),
('PostgreSQL-Tutorial'),
('MariaDB-Tutorial'),
('MySQL-Tutorial'),
('Teradata-Tutorial'),
('IBM Informix-Tutorial'),
('Amazon SimpleDB-Tutorial')
;
SELECT PARSENAME(REPLACE(coln,'-','.'),2) [before],
PARSENAME(REPLACE(coln,'-','.'),1) [after] from #Table1
输出
before after
SQL Tutorial
Oracle Tutorial
IBM DB2 Tutorial
Sybase ASE Tutorial
PostgreSQL Tutorial
MariaDB Tutorial
MySQL Tutorial
Teradata Tutorial
IBM Informix Tutorial
Amazon SimpleDB Tutorial
推荐阅读
- android - 当 Android Studio 要求重新安装应用程序时,如何避免删除应用程序数据?
- python - python检查一个方法是否被调用而不模拟它
- c# - 以编程方式获取 .NET 应用程序设置的路径
- typescript - 在打字稿中执行shell命令
- python - 在python中传递带有前导'0'的变量会引发语法错误
- python - 你安装了mysqlclient吗?
- python - Python反应式KafkaProducer不在线程池上工作
- imshow - 频率波数图python
- linux - 为什么 MongoDb 会因“得到信号:7(总线错误)”而崩溃
- c++11 - 使用 ostream 和打印功能进行打印,具有内部功能