SQL - 从值中匹配格式的表中选择最高值?

时间:2017-07-27 16:04:36

标签: sql sybase sqlanywhere

我有一个$('form').on('submit', function(e) { e.preventDefault(); //rest of code }) ,返回variable之类的format

我想从variable = '10100001001'(字符20)中选择最高值(最大值),其中值与上述变量的格式匹配。

匹配 - 可能是column等,

我已经看到类似的问题来选择最大值但不匹配格式。

类似于length

我想知道是否有更明显和优雅的方法来实现这一点。

样本数据:

Select value from Table1 where value like ('%variable%')

期望的结果:

id    value
--  -- -- -- --
1   101000019
2   abcd123gh 
3   101000026 
4   abcd
5    23433
6   10100gh34

由于

1 个答案:

答案 0 :(得分:1)

注意:不确定你的意思是“匹配 - 可能是length”,因此暂时忽略这一点......

如果你所做的只是一个like模式匹配,你可以通过更新变量(%)或者在变量select @variable = '%' + @variable + '%'中将create table Table1 (id int, value varchar(20)) go insert Table1 values (1,'101000019') insert Table1 values (2,'abcd123gh') insert Table1 values (3,'101000026') insert Table1 values (4,'abcd') insert Table1 values (5,' 23433') insert Table1 values (6,'10100gh34') go select * from Table1 go id value ----------- -------------------- 1 101000019 2 abcd123gh 3 101000026 4 abcd 5 23433 6 10100gh34 附加到@variable的末尾。 WHERE子句(见下文)。

这是一个简单的例子......

设定:

declare @variable varchar(20)

select  @variable = '10100001001'
print "++++++++++++ pattern : %1!", @variable
select max(value) from Table1 where value like '%' + @variable + '%'

select  @variable = '101000'
print "++++++++++++ pattern : %1!", @variable
select max(value) from Table1 where value like '%' + @variable + '%'

select  @variable = '10100'
print "++++++++++++ pattern : %1!", @variable
select max(value) from Table1 where value like '%' + @variable + '%'
go

++++++++++++ pattern : 10100001001
 max(Table1.value)
 --------------------
 NULL

++++++++++++ pattern : 101000
 max(Table1.value)
 --------------------
 101000026

++++++++++++ pattern : 10100
 max(Table1.value)
 --------------------
 10100gh34

搜索示例:

$payment->setIntent("sale")
    ->setPayer($payer)
    ->setExperienceProfileId('TXP-XXXXXXXXXXXXXXXXXXX')
    ->setRedirectUrls($redirectUrls)
    ->setTransactions(array($transaction));