Wednesday, April 22, 2020

SQL - When AND and OR Use Together In Where Clause (Follow Sequences)


Select * from [dbo].[TEST]

Select * from [dbo].[TEST]
Where Column2 = '5A5A5A5A' And
 Len([Column]) = 9 And
 Convert(INT, [Column]) > 0  And
 [Column] <> 'FFFFFFFF'

Select * from [dbo].[TEST]
Where Column2 = '5A5A5A5A' And
[Column] <> 'FFFFFFFF' AND
 Len([Column]) = 9 And
 Convert(INT, [Column]) > 0 
 
-- All 'AND', Follow Sequence
 Select * from [dbo].[TEST]
 Where Column2 = '5A5A5A5A' AND [Column] <> 'FFFFFFFF'And
 Len([Column]) = 9 AND
 CONVERT(INT, [Column]) > 0

-- Mix AND and OR, OR Must Be On Same Column, Then Follow Sequence
Select * from [dbo].[TEST]
Where Column2 = '5A5A5A5A' And [Column] <> 'FFFFFFFF'AND
 (Len([Column]) = 9 Or
  Convert(Bigint, [Column]) > 0)

-- Follow Sequence, 'PASS' in Selection Was Stuck When Convert To BigInt
Select * from [dbo].[TEST]
Where Column2 = '5A5A5A5A' And [Column] <> 'FFFFFFFF' AND
 (Len([Column]) = 9 Or
  Convert(Bigint, [Column]) > 0  Or
  [Column] = 'PASS'
 )
-- Error converting data type nvarchar to bigint.



-- Follow Sequence, Filter Out Already 'PASS' in the 'FFFFFFFF' Checking
Select * from [dbo].[TEST]
Where Column2 = '5A5A5A5A' And [Column] = 'FFFFFFFF' AND
 ([Column] = 'FAIL' Or
  [Column] = 'PASS' )

 ------------------------------------------------------------------------
 Select * Into #Temp From [dbo].[TEST]
 Where Column2 = '5A5A5A5A' AND 
 [Column] <> 'FFFFFFFF'

 Select * from [dbo].[TEST]
 Select * From #Temp

Select * From #Temp
Where Len([Column]) = 9 and
 CONVERT(BigInt, [Column]) > 0

 -----------------------------------------------------------------------



SELECT CONVERT(Int, '7896541236')
--The conversion of the varchar value '7896541236' overflowed an int column.
SELECT CONVERT(BigInt, '7896541236')
--7896541236
SELECT CONVERT(BigInt, 'FFFFFFFF')
--Error converting data type varchar to bigint.
SELECT CONVERT(INT, '888');
--888

-------------------------------------------------------------------------

SELECT CONVERT(VARBINARY, '3E1E809B', 2)
SELECT CONVERT(INT, 0x3E1E809B)
SELECT CONVERT(INT, '1042186395')
SELECT CONVERT(NVARCHAR(50), '1042186395')
SELECT SUBSTRING('1042186395', 1, 5)

SELECT SUBSTRING(CONVERT(NVARCHAR(50), CONVERT(INT, CONVERT(VARBINARY, '3E1E809B', 2))), 1, 5) AS LotteryNumber

-------------------------------------------------------------------------

No comments:

Post a Comment