Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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 server-如何在文本列中找到“”中的最大数字?_Sql_Sql Server 2008_Select - Fatal编程技术网

SQL server-如何在文本列中找到“”中的最大数字?

SQL server-如何在文本列中找到“”中的最大数字?,sql,sql-server-2008,select,Sql,Sql Server 2008,Select,假设Employee表中有以下数据:仅此而已 ID FirstName LastName x ------------------------------------------------------------------- 20 John Mackenzie <A>te</A><b>wq</b><a>342</a><d>rt21

假设Employee表中有以下数据:仅此而已

  ID   FirstName   LastName         x
    -------------------------------------------------------------------
    20   John        Mackenzie          <A>te</A><b>wq</b><a>342</a><d>rt21</d>
    21   Ted         Green              <A>re</A><b>es</b><1>t34w</1><4>65z</4>
    22   Marcy       Nate               <A>ds</A><b>tf</b><3>fv 34</3><6>65aa</6>
我需要在X列中搜索,并在这些括号中找到最大的数字


什么样的SELECT语句可以得到我,例如,在X列中的数字6?

< P>这种类型的查询通常用于查找模式,我认为它位于左边的第九位。p> 请注意,如果模式更改,下面的查询将不起作用

SELECT A.* FROM YOURTABLE A INNER JOIN
(SELECT TOP 1 ID,Firstname,Lastname,SUBSTRING(X,LEN(X)-9,1) AS [ORDER]
 FROM YOURTABLE
 WHERE ISNUMERIC(SUBSTRING(X,LEN(X)-9,1))=1
 ORDER BY SUBSTRING(X,LEN(X)-9,1))B
ON
A.ID=B.ID AND
A.FIRSTNAME=B.FIRSTNAME AND
A.LASTNAME=B.LASTNAME

您的需求是固定的,就像您每次都需要记录一样,还是您在寻求更一般化的东西?尝试将该值存储在不同的列中,使用这样的值是非常困难的。如果您无法将所有这些数字嵌入到一列中的字符串中,您可能希望对模式进行正则表达式搜索,并从中选择最大值,不幸的是SqlServer似乎没有对该值的本机支持。您需要编写一个CLR函数,如下所述@ashutsharya感谢您的快速回复。是的,我想要一个广义的解决方案。以上只是一个例子。@user2783787:你肯定!列x中的字符串只会像这样???只检查某个索引中的字符太具体了。此外,您似乎只检查一个数字,如果有一个数字之间有多个数字呢?对于本机T-SQL来说,要求听起来太复杂,不到100行代码无法处理。。。