从SQL中的列中选择子字符串

时间:2015-02-05 06:56:49

标签: sql sql-server

如何匹配另一个表上的子字符串?

表1:

Reference | Value
----------+-------
1         | 02.02.2011 07:07:00 498-123456-741
5         | 123-789654-100
5         | 123-789654-100

表2:

Reference | Code
----------+-------
5         | 123-789654-700
1         | 498-123456-100

我想计算表2中表1的值

select count(value) as count
from table 1 join table 2 on substring(value,0,12)=substring(code,0,12)
where reference='5' 

如果表2中存在该值,则计数为2.

select count(value) as count
from table 1 join table 2 on substring(value,20,12)=substring(code,0,12)
where reference='1'

因此第一个查询在第二个查询正常工作时,如02.02.2011 07:07:00 498-123456-741它没有将它与表进行比较,即使该值存在,在表2中它始终是一个子字符串(0,12)。

2 个答案:

答案 0 :(得分:3)

语法如下:SUBSTRING ( expression ,start , length )

例如:

SELECT x = SUBSTRING('abcdef', 2, 3);

以下是结果集:

x
----------
bcd

你应该这样做:

select count(*) as count from 
table 1 join table 2
on substring(value,20,12)=substring(code,0,12)

答案 1 :(得分:1)

这样做

SELECT SUBSTRING('w3resource', startingIndex, lengthForRequiredString);

示例

SELECT SUBSTRING(column_name, 4, 3);