这是一个将ip地址截分为四段,然后对每段进行不同的运算,然后相加得到一个数值的SQL语句。SELECT
 CharIndex('.',IPA) AS PosA1,
 CharIndex('.',IPA,SubString(IPA, PosA1 + 1, LEN(IPA) - PosA1 - 1)) + PosA1 AS PosA2, 
 CharIndex('.',IPA,SubString(IPA, PosA2 + 1, LEN(IPA) - PosA2 - 1)) + PosA2 AS PosA3,  convert(int,SubString(IPA, 1, PosA1 - 1)) * 255 * 255 * 255 AS IPA1,
 convert(int,SubString(IPA, PosA1 + 1, PosA2 - PosA1 - 1)) * 255 * 255 AS IPA2,
 convert(int,SubString(IPA, PosA2 + 1, PosA3 - PosA2 - 1)) * 255 AS IPA3,
 convert(int,SubString(IPA, PosA3 + 1, LEN(IPA) - PosA3)) AS IPA4,
 IPA1 + IPA2 + IPA3 + IPA4 AS IPA_ALL, CharIndex('.',IPB) AS PosB1,
 CharIndex('.',IPB,SubString(IPB, PosB1 + 1, LEN(IPB) - PosB1 - 1)) + PosB1 AS PosB2, 
 CharIndex('.',IPB,SubString(IPB, PosB2 + 1, LEN(IPB) - PosB2 - 1)) + PosB2 AS PosB3,  convert(int,SubString(IPB, 1, PosB1 - 1)) * 255 * 255 * 255 AS IPB1,
 convert(int,SubString(IPB, PosB1 + 1, PosB2 - PosB1 - 1)) * 255 * 255 AS IPB2,
 convert(int,SubString(IPB, PosB2 + 1, PosB3 - PosB2 - 1)) * 255 AS IPB3, 
 convert(int,SubString(IPB, PosB3 + 1, LEN(IPB) - PosB3)) AS IPB4,
 IPB1 + IPB2 + IPB3 + IPB4 AS IPB_ALL,
 IPMORE AS IPMORE上面的在ACCESS中是可以使用的,看起来很复杂,其实不外乎就解决一个AS问题。
如:select sum(num) as ex1, ex1 * 0.7 as ex2 from xxx
这里要求ex1在整个sql语句中如何再次使用?
当然可以写成:
select sum(num) as ex1, sum(num) * 0.7 as ex2 from xxx
但是像上面的那个复杂的东东,做起来就很复杂了。请教高手。