Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从注释文本字段中提取重量的SQL查询:例如249kg_Sql_Sql Server_Regex - Fatal编程技术网

从注释文本字段中提取重量的SQL查询:例如249kg

从注释文本字段中提取重量的SQL查询:例如249kg,sql,sql-server,regex,Sql,Sql Server,Regex,我想从SQLServer中的注释字段中提取一些数字和文本 注释字段显示(重量:249kg),但我只需要249kg 什么查询可以提取此信息,因为它需要“%[0-9]”多一点 谢谢您可以使用子字符串和CHARINDEX,它看起来有点凌乱,但应该可以工作 DECLARE @table TABLE(value1 VARCHAR(100)); INSERT INTO @table VALUES('Weight: 249KG'); SELECT value1 FROM @table; SELECT

我想从SQLServer中的注释字段中提取一些数字和文本

注释字段显示(重量:249kg),但我只需要249kg

什么查询可以提取此信息,因为它需要“%[0-9]”多一点


谢谢

您可以使用
子字符串
CHARINDEX
,它看起来有点凌乱,但应该可以工作

DECLARE @table TABLE(value1 VARCHAR(100));

INSERT INTO @table
VALUES('Weight: 249KG');

SELECT value1
FROM @table;


SELECT SUBSTRING
       (value1, CHARINDEX
       (':', value1)+1, CHARINDEX('KG', value1)-CHARINDEX(':', value1)-1) AS value1
FROM @table;
返回:
重量:249KG
249

编辑:

我错过了read,我以为你只是想要后面的数字而不是单位,即
249
而不是
249KG
。您可以使用
REPLACE
进行类似操作:

SELECT REPLACE(value1,'Weight: ','') FROM @table

对于确切的字符串,在T-SQL中,您可以使用
REPLACE(字段,'Weight:','')
,但我猜还有更多的排列。为什么不向我们展示一些其他数据库,并告诉我们什么类型的数据库(SQL Server?Oracle?)(1)用您正在使用的数据库标记您的问题。(2) 提供完整注释字符串的几个示例。(3) 解释一下如果没有权重的话该怎么做,如果有多个权重的话。这似乎是可行的,目前我在组合查询时遇到了一些问题。这里是我正在选择的表,它是dbo.JobOper.CommentText,我需要从SELECT TOP(100)PERCENT dbo.JobOper.JobNum、dbo.laborardtl.ClockInDate、dbo.JobOper.CommentText、dbo.JobOper.OpCode、dbo.JobOper.QtyCompleted、,dbo.jobooper.JobComplete FROM dbo.laborardtl RIGHT OUTER JOIN dbo.laborardtl.Company=dbo.jobooper.Company和dbo.laborardtl.JobNum=dbo.jobooper.JobNum其中(dbo.JobOper.OpCode,如'QF saw')按dbo.jobooper.JobNumwhy使用前100%的顺序?你想用哪一种?子字符串或替换?我希望将其拉入一个视图,而不是替换或编辑任何内容。将您的选择更改为
replace(dbo.JobOper.CommentText,'Weight:',''),
substring(dbo.JobOper.CommentText,CHARINDEX(':',dbo.JobOper.CommentText)+1,CHARINDEX('KG',dbo.JobOper.CommentText)-CHARINDEX(“:”,dbo.JobOper.CommentText)-1)作为CommentText,
,具体取决于要使用的方法