如何在SQL Server中的两个varchar字符串之间找到一个字符串?

时间:2016-09-21 09:06:12

标签: sql sql-server varchar between

考虑下表,我应该能够得到结果" A"当输入XYZ-00000001和XYZ-00000005之间的任何值时,例如:XYZ-00000003或XYZ-00000004

类似地,当输入为XYZ-00000008值" B"应该结果。

Table

3 个答案:

答案 0 :(得分:2)

SELECT [NAME] FROM YourTable WHERE YourValue BETWEEN Val1 AND Val2

答案 1 :(得分:0)

使用 SUBSTRING AND CHARINDEX:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="462px" height="73px" viewBox="0 0 462 73" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
    <title>emissaries-logo</title>
    <desc>Created with Sketch.</desc>
    <defs></defs>
    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="emissaries-logo" fill="#FFFFFF">
          <rect fill="#A9A9A9" d="M44.762,42.7358 ...." />
          //and so on
        </g>
    </g>
  </svg>

答案 2 :(得分:0)

您可以将字符和数字中的列分开,然后输入值进行比较。以下代码将回答&#39; A&#39;输入数字介于1到5之间。

SELECT NAME
FROM
(
select *, left(val1,3) VAL1_ALFA, left(val2,3) VAL2_ALFA,
cast(REPLACE( val1, SUBSTRING( val1, PATINDEX( '%[a-z]%', val1 ), 4 ),'') as int) val1_NUM,
cast(REPLACE( val2, SUBSTRING( val2, PATINDEX( '%[a-z]%', val2 ), 4 ),'') as int) val2_NUM from Your_Table
) A
WHERE 
4 BETWEEN val1_NUM AND VAL2_NUM