'Creating a computed(possibly hidden) column using COLLATE SQL
I'm using SSMS 18.
I have a column with 500,000,000 records that are codes. Those codes begin with a number of characters, that represent an object, followed by random characters. For example:
AZ4658 & TU874U = A-Z
sd8udf & kl8udf = a-z
0huoer & 0huoer = 0
3bhlbc & 3jhkla = 3
5bfdsg & 5byfdu = 5
9nbgyc & 98cnjj = 9
In my 'WHERE' clause, I have: WHERE [Code_Records] COLLATE Latin1_General_BIN Like '[A-Z]' or WHERE [Code_Records] COLLATE Latin1_General_BIN Like '[a-z]' or WHERE [Code_Records] COLLATE Latin1_General_BIN Like '[0]' or WHERE [Code_Records] COLLATE Latin1_General_BIN Like '[3]' etc
However, this is extremely slow as the index negates the function(or vice versa?). Is there a way to insert into a computed column using the COLLATE function and then index that column?
Thanks, I'm a year 1 IT apprentice so basically everything is new to me! Aidan
Solution 1:[1]
You're missing a % wildcard at the end of the LIKE expression:
WHERE [Code_Records] COLLATE Latin1_General_BIN Like '[3]%'
Alternatively, you can use Substring() to get the first character and match that.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Joel Coehoorn |
