We both wrote the examples with assumptions that you have only two patterns, if not you can go with the case stament itself
create table #SoftwareTest
(
SoftVersion varchar(500),
SoftVersionUpdated varchar(500)
)
insert into #SoftwareTest (SoftVersion)
Select '10.78.5'
union
Select '1.78'
union
Select '2'
union
Select '4.5'
union
Select '20.5'
union
Select '4'
union
Select '8.63.0'
union
Select '10'
union
Select '4.56.89'
union
Select 'NA'
union
select Null
update #SoftwareTest set SoftVersionUpdated=
case when CHARINDEX('.',SoftVersion,0) >0 then
substring(softversion,0, CHARINDEX('.',SoftVersion,0) )+ '.X'
when isnumeric(softversion)=1 then
SoftVersion + '.X'
else softversion end
select * from #SoftwareTest
drop table #SoftwareTest