表1
Values
9A 200x400x600
10B 400x200x500
....
值列数据类型为nvarchar
查询
Select * from table1 where values like '" & textbox1.text & "%'
以上查询有效,但我想以4种方式搜索
我想每3位数搜索一列
查询不应检查列中的space
和x
值。
预期产出
如何拆分搜索列值
需要查询帮助
答案 0 :(得分:1)
如你所知,查询是一个问题有点困惑。我会尝试,如果您正在寻找的话,请告诉我。
我认为:
9A 200x400x600 -> 200x400x600 are de 3*2+2 lasts characters.
10B 400x200x500 -> CHARINDEX(' ', value ) = 4
然后,查询是:
Select
*
from table1
where
substring( values, 1, CHARINDEX(' ', value ) ) = '" & textbox1.text & "' OR
substring( right( value, 3*2+2), 1, 3 ) = '" & textbox2.text & "' OR
substring( right( value, 3*2+2), 5, 3 ) = '" & textbox3.text & "' OR
substring( right( value, 3*2+2), 9, 3 ) = '" & textbox4.text & "'
<强>编辑:强>
select * from
(Select
substring( values, 1, CHARINDEX(' ', value ) ) as split1,
substring( right( value, 3*2+2), 1, 3 ) as split2,
substring( right( value, 3*2+2), 5, 3 ) as split3,
substring( right( value, 3*2+2), 9, 3 ) as split4,
*
from table1 ) SplitedTable
where
SplitedTable.split1 = '" & textbox1.text & "' OR
SplitedTable.split2 = '" & textbox2.text & "' OR
SplitedTable.split3 = '" & textbox3.text & "' OR
SplitedTable.split4 = '" & textbox4.text & "'
答案 1 :(得分:1)
请查看数据库规范化,尤其是first normal form。
目前,您的数据字段values
用于在一行中保存多个不同的值 - 例如。 9A 200x400x600
。 (不仅如此,您还在同一个字段中使用不同的值分隔符,因为和
x
都用于分隔字段。)
SQL不是为这种操作而设计的。
虽然可以生成一个返回相关值的查询,但这样的查询会很笨拙且不灵活。因此,我建议对数据结构进行规范化,以便更适合查询。
答案 2 :(得分:0)
Select " & textbox1.text & " as mYSearch,*
from table1
where values like '%" & textbox1.text & "%'