Friday, April 2, 2021

Fastest C# compare string


string.Equals(s1, s2, StringComparison.OrdinalIgnoreCase)

instead of toupper or tolower

Monday, February 8, 2021

Split sql with xml

DECLARE @xml xml, @str varchar(100), @delimiter varchar(10)
SET @str = '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15'
SET @delimiter = ','
SET @xml = cast((''+replace(@str, @delimiter, '')+'') as xml)
SELECT C.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as X(C)

Thursday, April 9, 2020

Parse URL in SQL

I searched a lot, and I did not like anything I found. Then I saw this on That site looks a little odd, I thought I would save this for myself, in case the site goes away, like some I used before stackoverflow.
CREATE FUNCTION [dbo].[ParseURLQueryString]
( @QueryString AS VARCHAR(MAX) )
RETURNS @QueryStringTable TABLE
( [Key] VARCHAR(100), [Value] VARCHAR(1000) )
DECLARE @QueryStringPair VARCHAR(2000)

WHILE LEN(@QueryString) > 0
SET @QueryStringPair = LEFT ( @QueryString, ISNULL(NULLIF(CHARINDEX('&', @QueryString) - 1, -1),
SET @QueryString = SUBSTRING( @QueryString, ISNULL(NULLIF(CHARINDEX('&', @QueryString), 0),
LEN(@QueryString)) + 1, LEN(@QueryString))

SET @Key = LEFT (@QueryStringPair, ISNULL(NULLIF(CHARINDEX('=', @QueryStringPair) - 1, -1),
SET @Value = SUBSTRING( @QueryStringPair, ISNULL(NULLIF(CHARINDEX('=', @QueryStringPair), 0),
LEN(@QueryStringPair)) + 1, LEN(@QueryStringPair))

INSERT INTO @QueryStringTable ( [Key], [Value] )
VALUES ( @Key, @Value )


And this is how you use it
SELECT * FROM [dbo].[ParseURLQueryString] ( 'fname=Barack&lname=Obama&addr=1600 Pennsylvania Ave NW&city=Washington&st=DC&zip=20500' )

Wednesday, February 26, 2020

WiX undefined preprocessor variable

Not sure how many people will see my small blog, but here I go, maybe it helps someone.

I recently had this WiX undefined preprocessor variable issue.

The actual variable was the same old $(var.MyProject.TargetDir)

After looking through the whole internet and not finding anything, the fix was a simple one.

The "MyProject" HAS TO BE EXACTLY THE SAME NAME as the web project that I added as a reference to the Wix project.
So if your project is called WhatewerWebAll, then you have to have something like:

You can say what you want, but the "undefined preprocessor variable $(var.MyProject.TargetDir)" message is actually not really describing the real issue, but maybe that's just me.

Wednesday, January 15, 2020

Sony Android TV Bluetooth headset issue a2dp

From what I understand after investigating this issue, this happens with multiple TV types from Sony.

I got a new TV, Sony BRAVIA, 49XG8096, 4K Ultra HD.
The TV is cool, no issues with it at all.

My plan was to connect it with a Bluetooth headset too, so I can watch a movie without wires, even if my wife is sleeping next to me.

I first bought a JBL Tune 500 headset, just because that was on stock, and could not lose time searching for anything else. The headset was working fine, connecting with anything, but I couldn't get it to connect to the TV at all.
I looked up this issue and saw that there is a list of headphones that are on an Official list from Sony. I can't say I was happy, but I went back to the store, and changed the headphones to a Sony this time, model WH-CH500B.

According to the list, it should have worked.
Well, it didn't.

I investigated some more, and I found out that this is might be a software issue, with a very easy fix.
I went to the TV's Play Store, searched for Bluetooth, and installed the first 3rd party app that I found. The app connected the Sony Headset to the Sony TV in less then 5 seconds.

After this, I can just go to the TV settings, and the WH-CH500B is listed as paired, I can easily turn it on or off.

I am thinking that the JBL might have been working too if I used an app like this.

I am not sure why Sony cannot do this themselves, but I don't care anymore.

Friday, December 15, 2017

SQL - update column with sequence number starting from 1

SET @id = 0
UPDATE x SET @id = [ItemNo] = @id + 1

Thursday, October 12, 2017

Find position of object in the screen

Tested it, it works pretty nice in FF, Chrome, IE, Safari too.
function resetPosition(object, args) {
/* find the textbox object */
var tb = object._element;
/* measure textbox height */
var tbheight = tb.offsetHeight;
/* find textbox in the page */
var rect = tb.getBoundingClientRect();
var divleft = Math.floor(rect.left);
var divtop = Math.floor( + tbheight);
/* find the auto complete extender div in the page */
var ex = object._completionListElement;
/* move the ace to the right position */
if (ex)
$common.setLocation(ex, new Sys.UI.Point(divleft, divtop));